Tuesday, December 29, 2020

Various network related tools

 

I find myself trying to remember various network / communication tools at times.  Links to some of those items to remember (and maybe help others).  Helpful for home/work related network related research/debug and sometimes virtualization, etc related work. This list isn't comprehensive and tools available will depend on OS and OS versions.

  • apparmor - kernel enhancement to confine programs to a limited set of resources.
  • avahi-
    • autoipd 
    • browse                   - browse mDNS/DNS-SD services using Avahi daemon
    • browse-domains    - browse mDNS/DNS-SD services using Avahi daemon
    • daemon                    - The Avahi mDNS/DNS-SD daemon
    • discover                  - browse mDNS/DNS-SD services using Avahi daemon
    • publish                   - Register an mDNS/DNS-SD service or host name or address mapping
    • publish-address     - Register an mDNS/DNS-SD service or host name or address mapping
    • publish-service      - Register an mDNS/DNS-SD service or host name or address mapping
    • resolve                   - Resolve mDNS/DNS host name(s) to IP address(es) (and vice versa)
    • resolve-address       - Resolve mDNS/DNS host name(s) to IP address(es) (and vice versa)
    • resolve-host-name   - Resolve mDNS/DNS host name(s) to IP address(es) (and vice versa)
    • set-host-name          - change mDNS host name
  • delv - DNS lookup and validation util
  • dig - dns lookup
  • dnsmasq - lightweight DHCP and caching DNS server
  • dstat - general tool covering info for various resources
  • iftop - network usage / dns ops
  • ip - replace ifconfig; routing/devices/policy routing/tunnels
  • iptables / ip6tables - admin for IPv4/v6 packet filtering and NAT
  • iptraf - interactive colorful IP lan monitor
  • mdig - pipelined dns lookup
  • mdns-scan - scan for mDNS/DNS-SD services published on the local network
  • multicat - multicast equiv of netcat
  • mz - fast versatile packet generator
  • nc - netcat; tcp/udp connections and listen
  • netstat - print net connections, routing tables, interface stats, masqerage conns, mcast membership
  • Net-tools package  
    • netstat
    • ifconfig
    • ipmaddr
    • iptunnel
    • mii-tool
    • nameif
    • plipconfig
    • rarp
    • route
    • slattach
    • arp
  • nmap - Network exploration tool and security / port scanner
  • nsupdate - dynamic DNS update utility
  • omping - open multicast ping (archived project)
  • resolvectl - resolve domain names, ip addresses, dns resource recs/services
  • route - show/manipulate IP routing table
  • smcroute - static multicast router
  • socat - multipurpose relay (SOcket CAT)
  • ss - investigate sockets
  • ssmping - check multi-cast receives from an IP4/6 host
  • systemd.dnssd - DNS-SD configuration info
  • tcpdump - dump traffic on a network

Hoping someone finds something new and useful out of this.


Wishing you a blessed day!
Scott

    Friday, December 11, 2020

    New computer - HP Z1 G5 / Ubuntu 20.10

     I've been using a somewhat dated but nice enough system for a few years now - HP EliteDesk 800 G1 with an I7 processor.  When purchased, it had 16GB RAM and I upgraded that to the max 32GB sometime back.  It works really well for general programming combined with some other home uses but struggled a bit when also combined with development that included Kubernetes, Docker and also screen recordings and videos using OBS Studio.

    I did some research and finally decided on a new system - an HP Z1 G5 tower. At the time, some direct from HP offers were going on.  After spending probably too much time figuring out what options were "must haves" I finally came up with a system configuration and a plan.  I really didn't want to break the bank but I did have some things that I'd like to work on that were limited with the existing system. I went with an I7-9700 CPU, the default 4GB of RAM and a 1 TB HDD for my baseline.  

    I wanted some ability to work with technology items such as:

    To support this, I decided an additional video card was worth it.  I included a Radeon 520 graphics card (in addition to the Intel i915 onboard video) as a starting point. Nothing super high end but good enough. I made the choice to go with the optional 500w power supply instead of the 250w to allow more customization/changes later. This affects available video card choices significantly and for minimal cost was a good future proofing option.

    To save a few dollars, I chose an option to only have FreeDOS installed.  This dropped the cost by over $200 vs the Windows 10 Pro option.  

    I've been doing a lot of professional software development lately that involves Docker / kubernetes and I've also been working with those and general virtualization items at home. One thing that was in short supply at times with the old system was memory so the base 4GB memory wasn't going to be enough.  The memory options from HP would be pretty pricey since I wanted to start with 64GB RAM and have slots left.  To save a pretty significant amount of money, I went with some 3rd party RAM and ordered a 64GB (2 x 32GB) kit.  This actually gives me 68GB total with the original memory included.  The only downside is that the speed of the new memory isn't quite as fast as the memory from HP. That is the cost/performance trade-off which seems worth it for now.

    I already had a SATA SSD and an NVMe / m.2 drive. I'm not leveraging those fully in the new system yet.  I'm still debating some overall setups so I'm just running off the HDD for now.  

    So the current overall config is:
    • i7-9700 3-4.7 GHz  (upgrades up to an i9-9900k 3.6-5 GHz)
    • 68 GB RAM (upgrades up to 128 GB)
    • i915 and Radeon 520 video (upgrade options include NVIDIA GeForce 2070)
    • 500w Power supply
    • 1 TB HDD
    • 1 TB NVMe / m.2
    • 480 GB SATA SSD

    When I received the system, it was boxed well and delivery was pretty prompt.  First boot was uneventful other than a bit slow and only had FreeDOS installed.

    I had made the choice to NOT spend the $1 each to LEAVE OUT the embedded security module and absolute persistence module.  That might have been worth while.

    My goal was to continue running UNIX like operating systems.  I've been running Ubuntu 20.04 for a while and decided to try 20.10 with the new system.  Note that 20.04 is the LTS (long term support) version where as 20.10 won't be supported very long.  The good news is that the system was marked as Linux compatible and based on some of the existing HP direct options I figured it would be easy to setup.  

    At this point, I did run into an unexpected problem.  I could not find a way to get into the BIOS / UEFI settings.  Every HP documented method and many other ideas off the internet failed for over 2 days.  I ended up learning a bit more about FreeDOS and the factory delivered configuration and even got to a Grub menu but was stuck due to the keyboard and mouse not communicating during that point in time.  After many Google searches, I ran across one person who reported the same issue and they provided a solution they said worked mostly.  

    So what was the secret they used?  Sigh.  They switched FROM plugging the wired USB mouse/keyboard into the BACK USB ports TO the FRONT USB ports.  Yes, that is all it took. Apparently the back USB ports are not active at that point in booting but the front USB ports are.  

    After this, I was able to get into the systems settings.  I also installed the additional memory and SSD storage.  I got Ubuntu 20.10 installed and without a huge amount of tweaking had my dual monitor setup working.  In fact, so far the video has been more stable than the other system with 20.04.  I'm still on the default Radeon drivers vs optional amdgpu item - somewhat because amdgpu doesn't seem to support 20.10.  Looks like they only support LTS versions of the OS.  Maybe some work-arounds available but good enough for now.

    In my struggles to get to the system settings and get an alternative OS installed, I ended up with what is a bit of an odd setup.  I ended up leaving the FreeDOS install and the Syslinux / SeaBIOS parts and pieces in place and can actually boot into them still if desired but now I have UEFI working and Ubuntu 20.10 boots by default.  I'd like to totally reformat the drive but am still a little worried due to the depth of hardware security tied in to everything.  I'm actually somewhat surprised that I didn't end up in an unusable state already from my early efforts. 

    I've have some of the security turned off at the moment but do worry about things such as unsigned OS modules, etc and things that affect the booting which could be reverted.  For some details on that; lookup HP Secure Start, SecureBoot, TPM, etc.  One link to info is this HP doc.

    Overall performance is pretty good.  I suspect even great once I get the primary OS items moved over to SSD storage.  

    I've got most of my development stuff reinstalled and working - although I'll document some challenges.

    Major SW items
    • Microk8s 1.19.3
    • docker / docker-compose
    • kompose
    • GCC, etc tool chain items
    • Java 11 / GraalVM 20.2.0
    • DBeaver
    • Eclipse
    • lxd
    • pack
    • Skopeo
    • podman
    • OBS Studio
    • cwctl-linux / codewind
    So I mentioned challenges a minute ago.  This has less to do with the new hardware and more to do with Ubuntu 20.10 and some software packages.  I ran into a number of issues with Microk8s during this switch but some of it was due to changes in Ubuntu combined with how things work in Microk8s - mostly involving firewall setup.  The Microk8s setup (for HA at least) now includes Calico but as mentioned - some firewall aspects have been challenging since then.  This has been an somewhat ongoing challenge but I think I have a setup that works but I need to persist the firewall changes once I'm convinced.  I've stopped using UFW for managing firewall changes and now just use iptables (1.8.5  / nf_tables) commands directly.  I'm still sorting out items related to iptables-legacy yet.  I wish this aspect wasn't so convoluted.  

    I've got 2 network interfaces in the Z1 and a spare wireless router so I am also experimenting with various interesting items and different kinds of setups.

    So overall, I'm happy with the new system.  Already learned a large number of new things or improved some skills a bit (iptables, UEFI, Calico, CoreDNS).  I've got some more DNS / discovery work I'm doing.  I'd really like to find a good but secure method of sharing some DNS data between Microk8s and my home network.  I've still got some research to do regarding CoreDNS, dnsmasq, ddns, bind, dd-wrt and probably a few other items for that.  I also have been looking at a number of other network related items as I work with microk8s, calico, etc. There are many interesting aspects to IP4 and IP6 that are now a bit easier to experiment with - llmnr, multicast dns, etc.

    On top of that, I'm working out final plans for some network storage.



     

    Saturday, September 19, 2020

    Replace carpet with Luxury Vinyl Plank

    We really love the general layout of our house but there are still a number of rooms with carpet.  As with our previous house, I'm slowly replacing carpet with some type of solid flooring.  The ease of cleaning and lower dust retention are big pluses for me.

    Here is my first attempt at replacing carpet with Luxury Vinyl planks though.  I've done some tile in this house previously.  I did 3/4" solid hardwood in our previous house along with a bit of vinyl sheet flooring in the bathrooms and laundry room.

    Initially, I was going to just do a floating floor but after a few conversations I was convinced to go ahead and do glue down.  The main reason was that some have experienced gaps over time when there are heavy items on the flooring. Since we have some heavy book cases, desk, etc - I'd rather put the extra effort in now and hope it prevents the problem rather than not try and then wish I had.

    I will say that one challenge is that we tend to do things out of order.  In this case, I had purposely not painted most of the rooms when we bought the house because I knew I wanted to redo a number of things and figured I plan them together.  That would work nicer if I had painted before putting the new flooring in.  This was a bit due to getting my wife a "surprise" desk that she has been waiting on for some time to replace the cobbled together solution previously in place.

    We ended up just partially assembling the desk (which is U shape when complete) so that we can move it around while working on the flooring and painting.  

    Here you can see the 99.99% completed flooring along with many of the items I had to juggle during the process.  I know the general recommendation is to run the flooring with the planks length in the same direction as the rooms largest length - I didn't do that here.  It was really a matter of practicality than anything else.  I don't think it really is noticeable with this particular flooring.

    I do recommend doing just 1 or 2 rows on the initial start because getting those done just right will make a big difference in how well the rest of the floor goes.  Once the first 2 rows dry well, you can be sure that they won't move on your even if you have to pry or tap on things.  Also, the unopened boxes made great weights to sit on the finished floor to make sure it was in glue well.






    In general, we really like the flooring. Gluing down was extra work and much more time consuming though.  I'm hoping that improved looks/longevity and better wear characteristics will make it worth it.  

    We used the recommended Bostic glue which works fine.  It is a bit messy as expected.  We usually did a chalk line for 2 rows at a time.  So generally we were able to do about 6 rows in a full day.  It took up to about 30 minutes time for the glue to set before the planks could be installed. With the right tools, strong helpers and patience you could do more and quicker.  

    I generally used a miter saw to cut the planks which are 12"x24" x 8mm thick.  A box of these planks is pretty heavy compared to other stuff I've worked with.  These particular planks are a solid vinyl which adds weight.  

    I'd highly recommend safety googles when cutting with power saws in this case.  It is very message.  I've seen some videos where people simply score and snap planks - I haven't tried it with these yet but I am using these in the master bedroom too so I'll have a chance.

    I did use my table saw for a few full length cuts but even with a 10" sliding compound miter saw you can probably cut to max length and flip to finish as I did on a few.  For irregular cuts as near our columns - I used a jigsaw which works ok.  I had a pretty coarse tooth blade on it.

    One thing that I still experienced with these  planks was a bit of gaping while installing.  These are click-lock as well but also have glue down instructions.  I have a rubber mallet mostly used for camping that also turns out useful at times like these.  If the tongue/groove didn't come together perfect, often I could take a block of wood carefully placed on the edge but on top of the bottom tongue and tap it as lightly as possible to get it aligned.  I also tapped on all the seams and face of plank to get it set in the glue well.  

    I've got a couple pieces to go around the columns yet and have to get some new floor moldings.  We are going with white moldings.

    The wall color is still being determined.  That has been probably the hardest part of the project - agreeing on paint colors. At some point we'll replace the drape/shades as well.

    Here is the post where I replaced the master bedroom flooring.

    Thanks for reading. 


    Jeremiah 30:17

    17 But I will restore you to health and heal your wounds,’ declares the LORD, ‘because you are called an outcast, Zion for whom no one cares.’



    Tuesday, July 7, 2020

    Quick survey of tech supporting Cloud/Container Development

    Cloud/Container development support

    1. Eclipse Codewind plugin/Project
      1. https://www.eclipse.org/codewind/
      2. Finally got this to install property after about 3+ weeks of toying with it - someones blog entry and some fortunate timing of things got me to reinstall my Docker setup without using 'snap' and also install Docker Compose. At that point, the final install setups started working. I've not spent much time yet working with this but it is on my short list of things to check out at the moment. I created a quick project and that seems to work but when trying to port my current Quarkus code over to CodeWind using the Appsody/Quarkus template template it wasn't a drop and run it result - I'll have to debug some build issue.  Maybe lombok related.
    2. Eclipse Docker plugin/tooling and Redhat Studio Docker Tooling 
      1. https://marketplace.eclipse.org/content/eclipse-docker-tooling
      2. https://tools.jboss.org/
      3. This has worked pretty well - I do like being able to do many operations directly from Eclipse (or IntelliJ with proper plugin) - and of course the command line.
    3. SpringBoot 2.3.x
      1. https://spring.io/guides/gs/spring-boot-docker/
      2. https://www.youtube.com/watch?v=1w1Jv9qssqg
      3. I'm lumping this in for the simplication of building Docker images and such.
    4. Spring Dev Tools and Eclipse
      1. https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/html/using-boot-devtools.html
      2.  This plus SpringBoot 2.3.x has some nice features I am starting to work with a bit.
    5. Quarkus 
      1. https://quarkus.io/get-started/
      2. This has a lot of potential.  I am able to create pretty decent services [Rest style access, JPA/Hibernate support, etc] and such like I had using SpringBoot.
      3. Development uses Eclipse and maven functionality.
      4. The startup times of plain Java (non-native build image) are still very good. The live-reload works ok in Eclipse much of the time.  I still have a lot of investigation to do
    6. GraalVM
      1. https://www.graalvm.org/getting-started/
      2. I have this here for its integration with Quarkus.  The idea of building Native apps for use in light-weight containers that are "relatively easy" to generate has a huge potential. Implementing the native app docker image was a massive resource hog (time, memory and CPU) but the initial startup time of the image was great.  This still needs a bunch of testing.
    7. MicroK8s
      1. https://microk8s.io/
      2. Works ok; hopefully my overall workflow will improve as I find ways to leveage the CodeWind, Quarkus/GraalVM, etc projects.  
      3. I am trying to work with the built-in registry to see if that helps with workflow in any way. I do wish I had created some aliases for the commands though.

    8. Lightweight Kubernetes package - k3s
      1. https://k3s.io/
      2. I've not tried it; sounds easy to use and setup.
    9. Docker Swarm mode
      1. https://docs.docker.com/engine/swarm/
      2. Not using it for the most part at home
    10. Apache Mesos / Mesophere / Marathon
      1. http://mesos.apache.org/
      2. https://d2iq.com/solutions/mesosphere
      3. https://mesosphere.github.io/marathon/
      4. I like the idea but haven't found a great use case for much self-learning on this.  All the cloud tooling seems to be pulling good ideas from each and integrating in some way with each other - over time this may have some type of usage that I can leverage but not sure yet.
    11. Lightweight Kubernetes package - Minikube
      1. https://minikube.sigs.k8s.io/docs/start/
      2. Not sure this at home at the moment.  
    12. Cloud Foundry 
      1. https://www.cloudfoundry.org/
      2. I'm now using this at home at the moment.  It was pretty easy to use at a previous job but I do question the overhead in some cases.  Appears to be finding ways to integrate with other technologies such as Kubernetes (See KubeCF project at cloud foundry site).
    13. Knative - kubernetes platform for deploying serverless workloads
      1. https://knative.dev/
      2. I've not tried it yet; Some of the various serverless technologies are slowly integrating with other stuff so it is likely I will work with it more at some point but isn't the highest on my list as of yet.  Serverless workloads have a lot of potential benefits but the cost with public cloud providers can be high depending on what you are doing.
    14. Lightweight local Kubernetes - kind
      1. https://kind.sigs.k8s.io/
      2. I've not tried it yet.  So far, I think Microk8s will fit my needs.
    15. OpenShift
      1. https://www.openshift.com/
      2. Sort of functionality layered on over Kubernetes.  Heard of stability issues from a proof of concept project at a past employer but not tried it myself.
    16. Container Runtime info
      1. https://www.inovex.de/blog/containers-docker-containerd-nabla-kata-firecracker/

    Thanks for reading!
    I'll update as I find new things to add/update.

    Hope your day is blessed!

    Scott

    Saturday, July 4, 2020

    Early Thoughts: Quarkus / GraalVM

    Containerization has become very important in recent years.  Starting about 4 years ago, jobs I've had went from no containerization in local data centers to running dockerized images in a cloud such as AWS or Azure. Initially this was just using docker directly on a cloud server.  Over time, the work has gradually migrated more towards Kubernetes though.

    There are a lot of lessons learned and a few still being learned. One area of continued learning is in the area of cost. It is so easy to spend big $ in any cloud environment. The choices we make in the tech stack and architecrual areas has a huge impact on final costs.  

    Native serverless solutions can become cost prohibitive when the call rate is extremely high. Slow virtual server startups means you must over-provision more initially to prevent lag time issues with auto-scaling. Fat dockerized images eat up memory typically requiring larger underlying hardware to provide additinal memory.  High initial docker container processing results in further over-provisioning to compensate for lag-time. Choices in runtime/language affect memory requirements as well.

    With that said, I've been starting to toy with some relatively new technologies in the bits of spare time I have at home - Quarkus (https://quarkus.io/) which also integrates with GraalVM (https://www.graalvm.org/).

    The ability to create an optimized container from Java microservice code which prunes out unused functionality and converts to a native application has some benefits.  The biggest touted benefit appears to be lower memory requirements for the deployed container and startup speed but I also think it might help improve security overall - needs some research.

    My initial work with Quarkus (non-native, just local images) has been pretty straight forward. I am able to work with it from Eclipse without significant issues.  I wil say that memory requirments tend be excessive for the build process (especially native application image). Without limiting memory, it consumed too much and caused system instability and trying to tweak the memory setting for the build itself is a bit of art.  Here is a snipped of the out of memory failure with 5Gb dedicated.

    [INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Running Quarkus native-image plugin on GraalVM Version 19.3.1 CE[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep]...
    [notesvc-quarkus-1.0.0-SNAPSHOT-runner:24] Exception in thread "ForkJoinPool-2-worker-9" java.lang.OutOfMemoryError: Java heap space: failed reallocation of scalar replaced objects
    Fatal error: Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceError: Image build request failed with exit status 1
    Once I bumped the setting in the POM file to 6Gb and reran build it succeeded.  Here is the profile that worked:

       <profile>
          <id>native</id>
          <activation>
            <property>
              <name>native</name>
            </property>
          </activation>   
          <build>
            <plugins>
              <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${surefire-plugin.version}</version>
                <executions>
                  <execution>
                    <goals>
                      <goal>integration-test</goal>
                      <goal>verify</goal>
                    </goals>
                    <configuration>
                      <systemProperties>
                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                      </systemProperties>
                    </configuration>
                  </execution>
                </executions>
              </plugin>
            </plugins>
          </build>
          <properties>
            <quarkus.package.type>native</quarkus.package.type>
            <quarkus.native.additional-build-args>-J-Xmx6G</quarkus.native.additional-build-args>
          </properties>
        </profile>

    The startup time does appear significantly faster on first tests.  I'll come back and add some of those details soon (hopefully).

    Hope your day is blessed!
    Scott




      

    Early thoughts: MicroK8s

    For now, it appears that Kubernetes is the default method for orchestrating containers in many organizations. Since my software development work has revolved around enterprise cloud solutions for the last few years, I've gone through various proof of concepts using other technologies but in the end - kubernetes tends to end up as the preference by many organizations.

    One area which I've not seen handled really well is the difference in working "microservices" at the individual developer level (local sandbox) vs in a shared development environment (cloud PaaS K8S). This also related to the initial bootstrapping of new services into a cloud/K8S environment. 

    Having per developer resources in a cloud can be cost prohibitive at scale and sharing resources results in coordination issues or worse (for early development).  Most places don't seem to have a standard development method across the board for local development - which shows up as bugs in early deployments.  Some developers are using Docker by itself to manage private resources or some combination with that and very specific shared resources (maybe a dev DB).  Other developers might be using a Docker/K8S solution on a Mac. So far, it often seems awkward at scale with few good/standardized practices.

    With that in mind, at home I started working with Microk8s (https://microk8s.io/). I'm hoping to derive some better practices/processes which can be shared. There are a few K8S solutions I could work with but MicroK8S was something I ran across pretty early on.

    Overall it works ok - there are differences between PaaS cloud K8S, role your own K8S on cloud servers and using Microk8s on a single physical system but it is still very useful from both functional and learning perspectives. I did a 'snap' install of MicroK8S on Ubuntu and after a bit fiddling got it working.  I have had a few issues when trying to do an upgrade but we'll see how things work out over time - maybe I should use a different installation method.

    It does consume resources but using an i7 based system with 16GB RAM, I am able to run MicroK8S, docker, Eclipse, Chrome, DBeaver and and a few dockerized contaniners (MySQL, Postgres, etc).   I'm trying to limit the addons for now to just a handful which are focused on metrics,monitoring,ingress,storage,registry, dashboard and Istio.

    I should create some aliases for commands because I do find it tiresome typing "microk8s kubectl ..." or the other dozen or so commands.

    It is easy to start/stop MicroK8S so if I find I need to do other work and need the resources, I can usually just stop it.

    When I started to combine other tech into the stack with this; memory has become an issue.  Using Quarkus fo build native images is super resource intensive - I'm considing upgrading to 64GB ram even it I need a new system to do so. I'll leave those details for a different post though.











    Sunday, March 22, 2020

    First use of OBS Studio for a video: Demo setup of a new Eclipse install

    I've been debating about trying to do some how-to videos for a long time.  This is my trial run to see what I need to do to create something of reasonable quality.

    I tend to talk low so I need to improve that a bit and not mutter softly.  Scripting things out and repeating until I have a good flow would probably be good too.

    Some of the slowness in Eclipse setup and such is probably due to the load of OBS Studio running so a bit more memory and faster CPU would probably be helpful.  I suspect that doing a window capture versus full screen might also reduce the system load. 




    [Edit] I do wish the final video quality was a bit higher. I think the blog site down converted the resolution a bit.  

    You can find OBS Studio at: https://obsproject.com/download

    Hope everyone is safe and healthy as we weather the COVID-19 virus.

    Thanks,
    Scott



    Saturday, January 25, 2020

    Wife vs vicious squirrel

    On a recent weekend, I ended up working through a good part of it since we had another software release at work and it wasn't going real smooth.  I was in my home office most of the time and at one point my wife poked her head in and saw that I was on a call so she closed the door without saying anything.

    It wasn't until later that I found out what had happened.

    You see - sometimes there are both good and bad aspects to being stuck working at certain points in time.  This is one of moments.

    So the reason my wife had come in was to see if I could get a squirrel out of our pool enclosure.  My daughter had noticed it and told my wife.  My wife, seeing I was on a call decided that she could get the squirrel out with a little support from my son to help her.  Now my son isn't much for animals in general so he is with her just to provide comforting words. 

    My wife chooses the pool skimmer with the long pool as her weapon of choice to try and prod the squirrel out of the enclosure. The squirrel is hanging on the netting trying to figure out where to go.  My wife gets the squirrel on the skimmer net and then she starts to bring it towards her a bit - she is on the narrow side deck between the pool and enclosure so not much room to maneuver the net. Now, what she didn't think about was that the squirrel was scared stiff and didn't know what to do other than.... JUMP.  

    Apparently, it chose to jump towards her.  We don't know why or whether it thought it could make it over her.  It didn't make it over her by the way.  It hit her awkwardly on top of the head and she screamed very loudly, my son says.  After which, the squirrel fell in the pool. It swam quickly to the side and got out at which point it clung to the side of the enclosure panting like mad and looking pretty pathetic.

    My wife quickly recovered but took a break.  My son and wife had opened the doors on each side of the enclosure with the hope it would just find its way out.  After a long while, it still hadn't gotten out.  As it finally got closer to an open door, my wife went out to see if she could goad it into getting all the way out.  Unfortunately, her arrival had the initial opposite effect - it put all its attention on the bad lady that dropped it in the pool..   

    After a few more minutes though, it finally recognized that there was an opening and it made good time getting out..  I suspect I will see one less squirrel running up and down the side of the pool enclosure now.

    Of course, I'm working through this whole thing and oblivious to the fun and adventure.  I wish my daughter had taken video.. it would be worthy of AFV on television. 

    Now how the squirrel go into the enclosure.. best guess is I have had an electrical cord running from the lanai out to my workshop since I don't have the electric from the house run out there yet - which means the enclosure door is always open a little..  My wife has informed me that the cord is no longer keeping the door open..   (I say right now at least... ehehhehe  ) 

    Hope this adventure gives someone a smile.



    Wrong assumption

    So if you read enough of my blog post for the last couple years you will notice a theme that we've had to deal with a lot of home repairs.  I've gotten into a bit of a mode where I am just expecting something else to go wrong each week..

    Well, one morning my wife was out of the house early and on her way to work while I was still laying in bed.  As I lay there, I heard a bird chirping loudly and a kind of thrumming hum.  It didn't last long enough then to really draw my attention but then it started happening again and in my semi-foggy state started to think about the sounds. 

    The first thing that started to come to mind is the heat pump which is right outside the window.  I've been waiting for it to go out.  As I lay there, I'm thinking it sounds like the compressor wants to start but can't.  And what is up with the bird like chirping sound - did something nest next to the to heat pump and is now flipping out due to the sounds or is it the heat pump too?

    I'm going to cover my head a minute and find a happy place now.

    I finally get up and decide there is little to be done - wait until evening to look at it closely.  My son was still around and he commented that mom had forgotten her phone - she gotten a hold of him from work. Anyways, I had an afternoon appointment that I did not want to miss nor did I want to be all uptight from the heat pump issue.  Normally I would just call the wife and things would be better - but couldn't that day.  

    When I went to my appointment, I took my wife's phone with me since I figured I would be pretty close to her work and I could drop it off.  The ESL class at church was that evening and I know she likes to know earlier than later if any teachers/helpers can't make it those evenings.  

    I dropped her an email that I would swing by and when I met her I told her about the heat pump sounds.  She laughed a little.  I thought she lost it.  Then she explained that she kept missing texts so our daughter changed the sound of her text notifications to a chirping bird and left the vibrate on too.  

    Hm, chirping bird you say?  That could sound a bit like a bearing on a compressor trying to go out and combine that with what sounds like an electric motor hum..  and I did find her phone in the bedroom.

    Sigh.  Ok, so the heat pump isn't going out.  It was just her phone.

    I did sigh with relief at that point.  


    Psalm 107:30 New American Standard Bible (NASB)

    30 Then they were glad because they were quiet,
    So He guided them to their desired haven.

    Unwelcome surprise

    So do you ever have moments where you want to pretend you didn't hear something?  There are times I do this just for fun when my wife is talking to me about various things - "Huh, sorry, didn't hear you?".  Usually this involves something that was forgotten.. theoretically speaking that might include something like a dry towel..  

    Then there are the times when you do wish you didn't hear something.  Usually this coincides with some very unenjoyable event for me.  

    This was an instance of the second item.  I know it is bad when my wife calls and the first words are "we have a problem!".  I really don't want to hear that. 

    The next words that come out are all in a semi-intelligible rush -  "water.. pipe broke.. spraying everywhere.  Where are YOU?"!

    I was able to gather after a minute that the pipe was outside.  Ok, that is either really good or really bad.  Fortunately, we had been doing enough work on the house that my wife and son were aware of where the shutoffs (multiple) were outside.  Their first attempt ended up being the one for the water heater only.  Fortunately, the second shutoff did work.  I say fortunately because the problem was downstream of the shutoff at the house and not between the house and the road.

    When I got home, I found that the line going to the long defunct sprinkler system had broken loose at a 90 degree elbow just *before* a shutoff valve. 

    When I had received my wifes somewhat frantic call I was still at work and it is roughly an hour home.  I got on my way quickly at that point - it was somewhere between 6-7pm already.  I was able to talk my wife through what I mainly needed to cap it (which I hoped was all that was required since I hadn't seen it yet).  She went to Lowes and picked up a variety of pipe sizes since they couldn't determine the exact size.  

    It worked out that she had the size required.  The only problem was that my pipe cement was expired - normally I don't even pay attention but I happened to decide to check since if this broke loose again I may not know immediately so better safe than sorry.  I made the run to Walmart at that point and got a fresh pack of Oatey cement/primer. 

    I ended up ripping out the lines that went to the sprinkler zones at the back of the house so I had room to splice in a new piece of pipe.   You can see below that I spliced in a fairly long (~ 2 feet) piece of pipe which was longer than needed but it let me reuse the clamp that was attached to the wall to hold it before.  I didn't have that clamp in place for the picture though.




    I think I finally got it done about 9:30pm and had the water to the house back on around 11:30pm.  I wanted to give the pipe cement a bit of time to fully cure. The extra parts in the weeds/grass were from the sprinkler plumbing I ripped out.

    So we figure we had a sideways geyser for probably several hours before it was noticed.  The sort of funny part is that my wife had gotten out of work and she laid down for a while in the master bedroom just feet away from the break.  Apparently at one point she got up very sleepily and noticed the sink only trickled but then laid down again.  Next time she woke she thought it was raining and then realized that wasn't the issue..

    So our next water bill will be a little higher than normal but it could have been a lot worse.  I'm just glad the pipe wasn't in the house and am grateful that my son and wife were able to find and turn the shutoff.

    I do have one extra project out of this now though.  When they shutoff water to the water heater - there are 2 valves.  One is an old brass gate valve and the other a newer PVC valve that someone spliced in instead of fixing the deteriorated old brass valve.  My wife had my son shut off both and the brass valve was pretty much shot and leaks when you try to close it. So now I will go ahead and put something else in that doesn't leak.




    2 Corinthians 5:1 English Standard Version (ESV)

    Our Heavenly Dwelling


    For we know that if the tent that is our earthly home is destroyed, we have a building from God, a house not made with hands, eternal in the heavens.