Category: Uncategorized (Page 2 of 2)

The Great Summer Snowstorm of 2020

Off Grid CTO: Labor Day and Storms

Welcome to this installment of life living off the grid as CTO of ModelOp guiding our technical vision of managing Machine Learning/AI models in the enterprise.  Today, we are actually going to talk about something very different than I originally thought.  We had a surprise storm the day after Labor Day, that really disrupted things up here for a day or two.

Labor Day

Well the Labor Day weekend was a great one.  Our company, ModelOp, has a program where half the team takes every other Friday off, and mine happened to land on Labor Day weekend, so I had a four day weekend ahead of me to get things done.  This is a really great benefit for our employees, and really helps them to get some time to take care of things in these crazy times.  BTW, we are hiring!

So with the weather forecast of some snow on Tuesday, and much colder temperatures, we used quite a bit of time to put things away that might get frozen, get some more firewood cut, split, and stacked, but also reserved a bit of time for some fun as well.

Saturday was the Colorado QSO Party on ham radio for Colorado, so I took a bit of time to play on that and hone my radio skills.  If my internet goes out up here, there is not really any other form of communication beyond my emergency inReach device, so I like to keep my equipment skills up to speed.  I contacted around 40 people in states from Florida, NH, VT, to CA and everywhere in between, all point to point with no reliance on anything else beyond my antenna.

We also spent Monday afternoon, after most of the crowds had left, going for a ride in our UTV through some pretty areas where the aspen were starting to turn.  It was beautiful, but the smoke from all of the surrounding fires was obscuring the sun lending an ominous tone to the impending storm.

Last Row In This Bay Filled with Wood

The Smoke Filled Skies in the Afternoon

Hex Beam Antenna

Then the Storm

We went to bed relaxed and feeling prepared for the snow and cold that was to briefly visit us.  We had put the work in that we needed to be prepared.  The wood box was full, everything was put away, and we were ready to go, but overnight the predictions had drastically changed.

Originally, it was expected to have some wind.  we expected the big temperature drop, and up to a foot of snow, but what happened was a surprise windstorm in our canyon that gave us the largest winds I had seen in my 16+ years up here.  We had winds gusting to well over 50 mph, and you would watch the trees just swaying, and in the distance you would hear snapping and trees falling.  Fortunately most of the trees near my cabin have been cleared, but there were still a few and every time a big gust hit, it would leave you waiting for a large ‘crack’ nearby, and after you heard one in the distance, I would try and figure out where it was and what it was hitting…  It was a stressful day and was not quite what we were expecting.


Snow Outside My “Office”

Then Came the Snow

Now with the wind still gusting to 50mph, the snow started.  It was blinding to the point where you could not see my shed which is 20 feet from the cabin.  The cabin windows were coated with snow, and it was coming down hard.

Still, off in the distance you could hear trees cracking and falling, but we still had no visibility into what was actually happening.  Was it the beetle kill coming down, or the much heavier and more dangerous lodgepole pines that are still heavy with moisture and really make an impact?

Safety was always first, though, so we were not going out into the woods to find out.  It would be way too easy to find myself underneath one of those falling trees, and that is not worth the risk unless life or limb is really at stake.  We were staying put and riding this thing out.

Watching Safely

Even though we could not safely venture outside, I fortunately have security cameras scattered about so I can keep an eye on things, and also catch pictures of the wildlife.  This gave us the unique opportunity to at least see some of what was going on, as the cameras tend to see ‘through’ snow rather than capture it.

We have one down on our driveway, and I watched as 4 different trees fell across the driveway, so this meant we were not going anywhere now until this storm let up, and we could safely remove them from the driveway.  So now it was really important we stayed safe and uninjured until these could be removed.

Trees Blocking Our Driveway

A Cold Drink

The Animals

Obviously the animals don’t have any access to forecasts, and this was an unusually cold snap very early in the season, so all of the hummingbirds were still around.  We would see them hiding in the eaves of our cabin from the wind, and try to fly out and get blown backwards.  They were still all around, and oddly, still fighting one another.

We kept one hummingbird feeder defrosted at a time inside, and one outside till it froze, getting them at least some nourishment during their battle with the storm.  All kinds of animals were taking refuge behind our cabin, as it offered protection from the wind.  A harsh life in the mountains indeed, and I was very happy to be inside with the woodstove going and warm and dry.

The Aftermath

Well sometime late in the evening the winds finally died down.  The snow was still heavy though, so we sat down to some home made posole, a much deserved bourbon on the rocks, and a game of backgammon with my wife.  We felt warm and safe inside, and knew we would assess the damage tomorrow, but at least minimally, there was nothing major in our buildings.  The winds still howled, but not on the scale of during the day, so we stoked up the woodstove, and went to bed.

The next morning, I had some work to take care of, so I got up early before dawn, and put in a few hours so I could go out in the morning and get the road cleared.  We have a lot of folks in some of the cabins who may not be prepared to move large logs, so it was time to make the road passable for their safety.

So we loaded up the chainsaw into the back of the ranger, which we nicknamed ‘Columbine’ after the local flower, and prepared to do some heavy lifting.

We found numerous trees across the road which we cleared, as well as the 4 in my driveway, but fortunately  another neighbor with a winch was out as well who had already removed a bunch of them.  We really do have a great adhoc community up here.

We did a quick pass at it to just make it passable, as the conditions were wet and cold.  So while not pretty, it got the job done so others could pass.  It also would let us get out in the case of an emergency.  We will make it nicer once the snow is gone and it dries up.

Loaded Up and Ready to Go

A Blockade

Not So Clean Cleanup


A Large Pine Down

A Whole Stand Down

Well, It Was The Live Ones

As we explored the damage done, we quickly noticed the most unfortunate thing.  None of the blown down trees were the spruce beetle kill, but rather the live tall pines.  The wind would blow right through the dead branches, but the lodgepole still had all the green attached to capture the wind like a sail.  So almost exclusively it was live trees down.

Down in the small mining town a few miles below me, there was some minor damage.  A powerline was pulled down (they have a line that runs just to half the mining town serving 32 cabins), and the town was without power.  A cabin had a tree fallen on the roof, but it appeared to have not caused major damage.  So overall, not too bad.  The NF campground below us, though, appears to have suffered extensive damage from fallen trees.

But another thing I could see was that whole stands were taken down by these crazy downdrafts that were occurring.  Just completely uprooted in place.  In the picture shown here, which is just behind my cabin, dozens of trees were just flattened by the wind.  It looks like I now have a whole lot more tree cutting to do….

Be Prepared

The moral of this story is to always be prepared for anything.  We keep lots of extra supplies on hand, and the right tools to take care of things ourselves.  We also always try to keep the wood box topped up, rather than letting it get low.  By doing this, even though it was stressful worrying about the trees falling on us or the barn, we knew we would be alright.

But you also take care of yourself mentally, and a warm pot of Posole simmering on the stove all day filling the house with both moisture and a wonderful aroma goes a long way towards making a relaxing environment.  Of course a nice bourbon after the danger had passed was greatly appreciated as well.  We not only survived the great summer snowstorm, but thrived in it ultimately as well.

In the next blog post we will be looking at all kinds of off grid lighting options, and what has and has not worked for us.

Thanks for joining me in our adventures,

Jim Olsen

Off Grid CTO

Dinner Simmering in the Cold

Power (Monitoring) to the People

Off Grid CTO: Monitoring Power Usage

In this week’s blog post, about living life off the grid while working as the CTO of ModelOp, a great startup developing software for managing AI resources in your enterprise, we are going to look at an actual hardware and software project I undertook.

When living and working off grid, knowing exactly how much power you are using vs producing is critical in your day to day activities.  The last thing you can do is to run out of power in the middle of a meeting and have your whole house shutdown.  A lot of this comes down to knowledge about how much is really going into your batteries at any point in time, and how much is going out, so you can understand and make choices about whether or not you choose to stay up late watching that extra episode or movie.

To this point I have always had the ability to monitor how much the panels are generating, and how much I am using via some simple meters.  In this week’s blog we are going to look out how we take that to the next level and create a single pane of glass into all of our energy usage, and really how much is going into or out of the batteries at any instant in time, no matter if it comes from the generator or the sun.  To do this, we are going to need to build some hardware, and write some software.

Simple Monitoring

The existing solution that I have used for several years is a manual process that involves two wireless monitors.  They work by installing a shunt inline with the wire being measured.  So I have one installed on the cable from the solar charge controller to the batteries, and another one installed on the cable from the batteries to the wiring in the cabin (the load).

This does let me visually look and see what I am producing vs what I am consuming at any time, and also to monitor the battery voltage to see if I am approaching a critical level or not, and get a sense of the state of charge of the system.  This is handy in the house, but gives me no remote capability to monitor this at all, nor to track over time.

The Charge Controller

The charge controller does give us a variety of statistics about what it is doing, via the modbus protocol, but unfortunately it can not tell us about load in the system, or more critically, exactly how much energy is making it into the batteries vs used up live by current energy demands.

That said, this is very valuable data that is an important part of the solution.  So we really want to capture it.  Currently, I import this data, along with my weather station data, into weewx, a weather station monitoring program that also runs on a raspberry pi.  We will be looking at that process in more detail in another post.  This is great for historical data capture, but is not so great for live monitoring as it only updates every five minutes.  On a partly cloudy day, it does not give us a very good picture of what is going on.  I needed a solution that would replace the above meters with all of the data needed in one place for a quick glance picture of what is going on in my system.

Measuring the Load

So it came down to that I needed to be able to pull together information from the charge controller, as it can tell me battery voltage, solar panel watts being generated, etc., but needed to add information about actual system load.  Further, unlike the current shunt based system, I needed it to measure bidirectionally, so I could really see exactly how many amps were going into, or out of, my batteries.

I found the holy grail in the ACS758  hall effect based linear current sensor IC.  It outputs amperage from -100 amps to +100 amps and would allow me to really see what was coming into and out of my batteries.  In order to put it to use, though, I had to add a system to read those values, and wanted to do it in an expandable way.

Getting the Current Data

As we talk about all of these components, I want to point out that all of the code for this project is available on my project github page in various subdirectories.  Eventually this will be expanded to include weewx integration, but for now you will find the necessary Arduino sketch and Dash application we are viewing in this blog post.  So ignore the references to weewx, and I will be doing another blog post on that process in the future as I complete that work for storing the data over long period of time.

To monitor the actual current, I placed the current sensor inline with the batteries and both the charge cables from the solar charge controller, as well as the load cables.  In this way any energy coming into, or out of, the batteries will be captured.  If we receive a negative value, we are putting energy into the batteries, and on a positive value, it indicates we are drawing out of the batteries.

To monitor these values, I utilized an Arduino Uno Wifi board in an industrial enclosure.  You can find the code up on my github project page, but in essence it sets up a mini rest server that allows you to query any analog port for the current amperage value.

The current sensor is wired to the +5v and Gnd ports on both the sensor and the Arduino.  Also, I have wired from the A0 port and the Gnd port on the Arduino, to the the Out and Gnd port on the sensor.

The software linked to above will spin up, open up a REST endpoint (<ipaddr>/A0) which can then be queried.  This will allow me to add other sensors to the other A<x> ports for other purposes as I go along.  I could now query for the current amperage with any REST capable client.


A Single View

So now what I wanted is a single place I could go to view data from the new current sensor installed on the battery, and couple that with information from the charge controller so I could get a great view of everything going on with my system.

To that end, I decided on utilizing a Raspberry Pi 4 with a integrated touch screen solution.  This handy unit came with  simple case and a touch screen that plugs right into the pi and works as a standalone system I could create a web based application on to monitor all of the stats.  I will mount this to the wall as a single view of all of the energy parameters and what is going on over time.

I decided on using Dash to create the simple application that would query both modbus and our new REST endpoint, as it is something that I can rapidly iterate on down the road without spending a ton of development time, which when working for a startup is very precious time indeed.  I wanted this up and running fast and simply.

Since dash apps are browser based and server based, the Raspberry Pi with the desktop installed is a perfect fit, utilizing the default chromium browser.  I have instructions in the readme file of the repository on how to auto start a full screen browser instance on reboot of the pi so it ends up filling the entire screen.

The Results are In

So designing the software was relatively easy.  A dash app is fairly basic in that you initialize the application with a framework for the page.  In this case, I put a simple table at the top to hold the raw values, a plotly graph just below that, and a button to rotate through the different graphs. I then utilized dash intervals to periodically update both the table text and the graphs.  I suggest reviewing the code directly to see how it all works, as it is reasonably straightfoward.

Every five seconds, it would fetch the values from the REST endpoint on the Arduino, and would also use the modbus protocol to read the values from the charge controller.  These are tied to the table values on the top of the screen and give me the rapid response information of real time stats.

Every minute, it does the same query, but adds to a graph data array that contains all of the values against time.  These are stored for a maximum of 24 hours before they rotate out and are replaced by the newer values.

I have three graph options right now of battery load (can be positive or negative), solar array wattage, or battery voltage.  By simply hitting the button at the bottom of the screen, I can switch between these graphs.

So overall now, I can see what is actually going into and out of the batteries, as well as what I am producing for power overall and track the battery status with all of this being viewable over time, and in a way it is flexible and quick for me to expand the solution.

My next expansion will likely include adding another sensor just on the load portion of the circuit itself so I can also monitor the actual load on the system ignoring any of the solar input.  As I’ve designed it, all’s I have to do is hitch it up to  the A1 port on the Arduino, and will not have to change any of the existing Arduino code.  Then I need to simply add to the dash app and away we go!  Always design your software with the flexibility up front so it is easy to expand in the future.

I may also persist some of the values out to keep a running tab on the energy usage, etc.  I now have a fully platform to add any view I want on my energy system which can be rapidly developed using python.  The sky is the limit!

Thanks for joining me on my project journey this week and hope you will join me in next week’s blog post!

Jim Olsen

Off Grid CTO

Water, The Lifeblood of the Wilderness

Off Grid CTO: Water

This week we will continue our series about living off the grid working for ModelOp as their CTO designing advanced software for managing your ML/AI models in an enterprise environment.

In this week’s post, we are going to look at the challenges of living off the grid with no city services, including water.  So specifically, how do we get our water utilize it around the property and in our cabin.

When the well is dry, we learn the worth of water

There are many famous quotes about water, as water really is the most important need you can have.  You can go for quite a few weeks without any food, but only just a few days (or less) without water.  We use water for everything from consumption, to cleaning, cooking, and even just for dealing with waste. 

Living without it even for a short time, you really feel the impact.  The first winter I tried to spend up here at the cabin 15 years ago, the water line feeding the cabin froze, and I lived without water from November to April, and it was not fun at all.  I knew I had to do something different, and this post is about that journey


Whiskey is for Drinking, Water is for Fighting

This quote is often misattributed to Mark Twain, but it is an old statement about the realities of living out west.  Most of the west is quite dry.  When I was looking for property that was off the grid, it was one of my main considerations.  It is eventually what made me decide to head out to Colorado, rather than Utah, for land, as drilling a well is a very expensive proposition.  There is also no guarantee you are going to get water.  I wanted something that had visible water and several choices of where to get it from.

So when I found this current property that had multiple springs on it, a small creek running from wilderness above it, and a major stream running through it (Tomichi Creek), I new this was a contender.  Plus it already had a gravity feed pipe system setup on it.

So with the scarcity of water in the west, and the amount I could see on this property, I new that something could be done….  Of course in the first year up here in the winter that gravity feed froze up, so what to do about it…

First and Foremost, Drinking Water

So my first concern was to make sure I had a steady supply of clean and pure drinking water.  On this property, there are several springs down by the river.  Our favorite, we refer to as ‘pipe spring’.  It was a surface spring that pooled up, but by sinking a pipe into the ground underneath it with holes in it, and having sand all around that, the water instead flows nicely out of a pvc pipe for simple filling of bottles.  This spring sometimes dries up in the fall, but only in dry years.  It always freezes in the winter.  The snow damaged the boards this last winter, so yet another project to write about is coming.

And Water for the Winter

Another spring on the property was modified by sinking in a plastic trash barrel into the ground.  A pipe was then placed into the ground again below the spring, and the water flows through the pipe into the trash can sitting beneath ground level.  Thus it became known as ‘bucket spring’.

On the opposite side is also an equal height outflow with a pipe buried in the ground that flows out to the river.  A cover then goes over the spring so it is all insulated by the ground.

Even in the dead of winter, this keeps flowing and does not freeze in this arrangement.  Eventually, we would like to pump water from here into our cabin, but it is quite a distance up the hill.  So we dig down to this in the snow and get our drinking water from this spring all winter long.

Also, the Water from Above

So this just left us with the need for normal house water for bathing, cleaning dishes, cooking (as you boil the water when you cook), and other such normal house stuff.  As I mentioned, when I bought the place there was already a 3/4 inch poly pipe running from a beautiful creek above my property providing a great flow of water…  So I thought…

First off, it was always getting air in it so you would be taking a shower and it would ‘surge’ off and on.  Doesn’t sound so bad until you also realize that the temperature likes to change in pace with that, so not exactly the most relaxing shower in the world.  This I  solved by moving the intake higher, building a new intake using coarse metal intake filters from the tractor supply store, and building a nice pool in the stream.  I tried a fine filter up top, but that just clogged non-stop. I put a traditional sediment filter at the bottom, but that lasted only a week or so and would have to be cleaned and or changed.  This was not going to work.

Less debris, more water

I did some research, and I came cross an interesting self cleaning filter.  The principal is that you leave water flowing all of the time, and it creates a vortex around the outside of the filter.  This scrubs the debris off of the screen.  Then when you need water, it draws it through the screen, but water is still flowing out around the outside of the screen, so it tends to scrub itself off.

Now in a house where you may be paying for water, or have limited amounts, these may not be the best choice, and you likely have to switch the flow on and off.  In my case, the water is free and plentiful, needed to be kept running to avoid freezing and stagnation, and flows back into the river where it was heading anyways, so it was a perfect fit.

So I have the water flow down to my cabin, then through this filter, and control the outflow back into the river with a valve further down the property.  So all was good until that first winter.  The water stopped flowing, froze up, and would not be back to April.  Without a protective blanket of snow, even though the pipe is buried, it still froze up in the line.  There had to be an alternative situation. 

Tanks for the Water

By April, I had had it without having any water in the house.  Enough was enough, and I really had to come up with something.  Then it struck me that my house was basically a big RV already, so why not get a good RV pump, and make my own house pressure?  They are auto activated, and give you 60 psi, or normal house pressure and run on 12v.

So off to the tractor supply store for a 100 gallon drinking water safe tank I could keep in the cabin to not freeze, and online to order an RV pump.  After putting the tank onto a sled and towing it up behind the snowmobile (I did not have the tracked vehicle yet), getting it plumbed into the system and hitching up the RV pump, I was ready to fill the tank.  Of course the gravity feed water was still frozen, but Tomichi Creek below me flows open all winter long.

So with a gas powered pump, and two long garden hoses, I dropped the end into the river, fired it up, and was able to fill the tank.  If you are careful with water, 100 gallons lasts you quite a long time.  So we conserved water wherever we could, and would just go through the routine about once a week of filling it up.

We also hitched up the tank to the gravity feed, so we could fill from that once it was going as well.  And as a last resort, I have several 7 gallon water cans we can manually fill from if needed as well.  So now we had a great way of ensuring we always had water.

Water a Plenty

So now during most of the season, the gravity feed is reliable and we fill not only the tank in our cabin with the water, but we can enjoy our wood fired hot tub which we just refill each time we use it.  It takes hours to heat up, so it is for special occasions and you have to plan ahead.  Having no chemicals and fresh mountain spring water really soaks away the chores….

When it gets very cold and there is no snow, we drain the gravity feed and use the pump from the river and carefully drain the pipe each time so as to not freeze up.  This year, we will also have a 35 gallon tank on our tracked UTV with a small electric pump.  So we should be prepared no matter what happens.

In the future we would love to bury a much larger tank above the cabin, run the pipes deep, and pump water up from our ‘bucket’ spring.  This will require some heavy equipment to get done.  So many projects ahead of us!

Next week, we will look at a system I have been working on to monitor our energy usage using multiple raspberry pis, arduinos, and hall effect sensors to detect bi-directional energy flow.  This will include the hardware and source code available on github.

Thanks for joining me again this week,


Jim  Olsen

Off Grid CTO

Communications Off The Grid

Communications Off the Grid

This is the fourth post in my series about living off the grid working for ModelOp as their CTO designing advanced software for managing your ML/AI models in an enterprise environment.

In this week’s article we are going to examine how do you actually use phones and the internet in the reality of a remote location, were you are unlikely to have traditional high speed internet options like you do in the city.

Just a reminder that I will talk about what products I am using, but I receive no compensation from anyone on these.  It’s just what I have found to work for me, in my situation, so far.


No Cell Service, and No Fiber

Most people, when I talk to them, don’t believe me that there is absolutely no form of traditional communications infrastructure up here.  There are zero bars on the phone.  If I drive up on top of the hill a ways from here, on an ATV only road, there is one spot where I can pick up a weak signal.  So cell phone boosters, etc, are not going to get you anything.

Similarly, there are also not any wireless internet providers.  We live in a canyon, so it is not realistic that is going to happen any time soon.  So right now, there is really only one option (well two companies actually) for internet service.  Satellite internet is the one an only option.

Satellite Internet

So realistically, satellite internet is the only truly remote option that you have.  I have chosen Viasat as my particular provider, as it seemed the beam coverage was better in my particular area.

All of these satellite internet providers use a geostationary satellite.  That means it is quite far from earth, so speed of light puts some real limitations on what they can provide.  Further, that one satellite covers a whole bunch of people, so they use ‘spot beams’ to narrow the focus of land that is covered by that single beam.  So depending on how crowded your geographic area covered by ‘your beam’ is, it affects your overall potential performance.  Given how remote I am, and the beam I am on, I actually get pretty good service with Viasat.

As you can see, I get 35mb down, and about 5mb up.  Now I know that sounds slow to you folks in Silicon Valley, I know some people back in Salt Lake City area who can only still get DSL.  So Not bad for being in the middle of nowhere.

High Speed, but High Latency

So for downloading files, accessing websites, etc. we can see that they have heavily compensated the protocol to counter the speed of light realities of each packet going up into space, coming back down to earth, then back into the regular internet.  But if you look closely, you can see the latency is at 2000ms.  That is a long time!

Fortunately modern VOIP and other conferencing platforms handle this quite well with some buffering.  So all still works well there.  But try and using something like ssh, and you will be endlessly infuriated unless you are a very confident typist and don’t mind it takes awhile for your text to show up.  I don’t do a whole lot of ssh to remote machines, however, so it has not been a problem for me.  I mostly work locally and look at logs if it is remote. 

The modem is placed inside and runs off of 48v dc.  They provide an adapter from 110v AC like everyone else, but I got a buck converter off of Amazon to convert from my 24v system up to the required 48v DC and use that.  This avoids having to have an inverter and it runs flawlessly.  It is one of my largest daily consumers though at around 50w of power.

Getting the Packets Around

The Viasat modem does provide basic routing and wireless capabilities, but I was unhappy with the controls it provided.  So I turn off the wireless in the modem, and use my own routing.

It is a standard dual band wireless router, and it runs natively on 12v.  I use it for everything but DNS, as satellite internet steals your DNS packets.  So I use a pihole configured with encrypted DNS to a secure DNS server to act as my DNS server to avoid this.

Packets in the Great Outdoors

Since there is no cell service, we rely on wifi calling for both texting and voice.  Given that we do like to be outside, we need good coverage outside of the cabin.  The roof of the cabin is metal, so that obviously limits the range of the inside router, so we purposefully turn its power down, and have an outdoor access point setup as well.  This sits up on my roof with my weather station instruments.

Now the trick is, many of these utilize POE, but POE means many things in reality.  Having a full fledge POE router running on 48v is actually quite energy wasteful, from my experience.

But in reality, what I found is that the voltage varies based on the device so for instance my external wifi access point runs at 24v.  They all come with their own plugin injector that runs on AC.  So I found these handy devices that allow you to inject power from any DC source, so I built my own from a voltage converter and the generic injector.

Unlimited is not Unlimited

The biggest challenge, once you get this all setup, is that you are now subscribed to the unlimited plan, but you maybe never had read the fine print.  Unlimited, like many cell providers, has a data cap.  After that data cap, then you are deprioritized.  From my experience, once you are in that bucket, forget any kind of reliability for conferencing and other higher traffic usage applications.

So the goal is to always stay under the 100 gig of data a month, and there are some key strategies for doing that.  The biggest data usage by far is any video, so we don’t download and watch videos whenever possible.

For movies we purchase and download them on public wifi connections when shopping in town.  But one of the biggest applications out there that just wants to suck down all of your data is Zoom.

Zoom does not have an option to hide user video (unlike webex), so it forces you into using up your bandwidth in meetings, but I have found the tricks to minimize data usage despite the lack of this option.  These techniques will help you even if you are not off the grid, but maybe have the rest of your family watching Netflix during your important meeting, and the connection is breaking down.

  • Video Send is off
  • Gallery View is On
  • Audio is on both directions

Zoom With Video and Voice

So if you just join the zoom meeting, and have your video off, you can see zoom consumes a significant amount of data.  There is no option, for who only knows what reason, to turn off the view.  It likes to force you to use up this data, and at this rate, it is around 1 gig per hour.

That adds up way too much toward your data cap when you have multiple meetings per day.  I would be out of data in no time at these rates, and unable to effectively work.

  • Send video is off (Camera is Off)
  • Window is shrunk to very small size, or gallery view on full screen share is minimized
  • Use the arrows and change to your static picture

Zoom, the Minimalist Usage

So after experimenting around quite a bit during some meetings that perhaps went just a bit too long, I figured out how to get around all of this and reduce my data usage to two levels that provide minimal usage, with a certain level of functionality

First I targeted how to use the absolute least amount of data on Zoom.  What I found that works is two fold.  If there is not a screen share, the only way to do it is to shrink your zoom window down to a small enough size that only one video shows.  Then use the arrow buttons to find your static picture and focus on that.

If there is a screen share going on, and you are in full screen, you can just minimize the video gallery view and you get the same effect, but beware when they stop sharing their screen all of the videos come back.

This created a 10x decrease in data usage, as you can see.  We are now down to very minimal amounts of data, and all is well.

  • Video and Audio Send Enabled
  • See only the current speaker
  • Make sure HD Video Send is disabled on your end

Zoom, Full Video, but Minimal Usage

At some point, you will also need to be on a call where you may need full video send and receive in order to participate appropriately in the meeting.  So how do we use the absolute least data and accomplish this.

First, make sure your video is not in HD mode.  If you are in HD mode, you will be sending the 1000 kb/s and your total usage by default would be 2 gig per hour.  In zoom settings, make sure the HD option is unchecked under video.

Second, a big trick is do not be in gallery mode.  Once again, reduce the size of your screen so only one video is showing, and switch to speaker mode.  Now whoever is speaking’s video will be shown.  As you can see from the stats this reduces the receive stream to only 300kb/s, so 1/3 the standard view, and our send stream is only 200kb/s.  So we have significantly cut our data down again. 

You can also cut your video off and just watch the speaker as an option as well to reduce data down to the 300kb/s.

So with these tricks, you can attend and fully participate in meetings while leaving plenty of data to get your work done.

The lifeblood of work, coffee

I’ve actually received quite a few questions about how do you make coffee up there, without any AC power.  Where do you plug in the coffee pot?

So I thought I would close out with what I do to wake up in the morning.  We use a generic percolator coffee pot, made by Coleman for camping, and make it on the stove. I grew up with percolated coffee, but it was always electric pots.  I actually really like percolated coffee, so switching to a stove top version and smelling the coffee brewing and hearing the sound it makes is always welcome in the morning chill of the cabin.

But we like to sip on our coffee, and as many point out, unless making one cup at a time it just gets cold.

We make a full pot first thing in the morning, and almost every morning since I get up early, we have a small fire to warm the place up.  So the coffee pot sits on the stove and keeps warm all morning long.

In next weeks blog, we will once again leave the tech space and look at another staple of life off the grid.  Last week we looked at firewood, so next week we will look at water and what we have to do to keep it flowing.

Thanks for joining me again.

Jim Olsen

Offgrid CTO

“It’s amazing how the world begins to change through the eyes of a cup of coffee”

Beetles, Wood, and Projects


The Mighty Beetle

This is the third post in my series about living off the grid working for ModelOp as their CTO designing advanced software for managing your ML/AI models in an enterprise.

In this week’s article we are going to talk about an unfortunate reality here in Colorado, the spruce beetle, and how we are managing our 14 acres of wooded property. 

As a note I will show lots of tools, products, etc. that I use up here that I have found to work for me.  I do not receive any compensation from any of the companies products I show, it is just what I bought and use.

The spruce beetle

The tiny spruce beetle has caused massive destruction of spruce trees out here.  It all began about 4 years ago and really moved in with such speed and force that it was shocking.

My land is a mix of Engelmann Spruce and Lodgepole Pine.  The spruce beetle, fortunately, only attacks the spruce.  They burrow into the bark, leaving small holes behind, and eat the layer between the bark and the tree.  By the time you see the first browning of the leaves on the tree, it is already too late and it is dead.

There are areas near here that are only spruce that there is literally no green left at all, and just the skeletons of trees.  Having the Lodgepoles has turned out to be a blessing, although it is ironic as they were planted here by the miners in the 1800s for mining timbers, and are not native to the area.

Changing the Landscape

The entire forest was affected, including quite a bit of my land.  The hillsides turned from luscious green forest, to a dull grey/brown in the course of just a couple of years.

This is not only visually disturbing, but is a huge danger.  All of this standing dead trees, with very fine branches, is an extreme fire danger.  So especially on my land, I need to clear it all out if I ever want to have the hope of surviving any kind of a fire.

Clearing Out the Land

There is a ton of work to do here to remove all of this beetle kill.  It is a top priority for us up here at the cabin.  But with so much wood, what do you do with it all?  Well we have a multi tiered strategy of how we use it all, but the first step is getting it all cut down.

In the pictures below, you can see a before and after from the same spot.  Notice how much more light there is after just partially clearing this area.  It dramatically changes the woods and as we remove the dead, we hope it encourages more trees to grow back.

As you can see, some of these trees are quite large.  Being safe while doing this is of the utmost importance.   You really have to take the time to learn how to properly drop and fell a tree or you can seriously injure yourself.  Fortunately, I have been doing this since I was a child, so I came to the game with this skill already.

The Most Important Tool in the Woods

Your chainsaw is absolutely the most important tool you will have out here.  Do not scrimp on a cheap model, as they will either be under powered, or weigh a ton.   I personally like this saw as a balance of power and weight.  It is a Stihl MS 362C and really does a great job.

I find I can cut for a quite a few hours and still be capable of moving my arms some, whereas other saws I have used just destroy your arms with the weight.  Also, I use professional chains without anti-kickback features, as the safety chains will not get the job done.

If you are headed off the grid in the woods, this should be your absolute first purchase you make.  You will be using it a lot.

The First Use of Wood

The first use of the wood we prioritize over all else is the larger bottom part of the trees for lumber.  Lumber has gotten more and more expensive over the years, as well as it is very difficult to transport to up here.

So I bought a chainsaw mill by Logosol, to turn our wood into lumber for all kinds of projects.  So all of the thicker portions of the tree get cut into 10 foot lengths, hitched up to a chain, and dragged by my ATV up to my barn where they are stacked and eventually turned into lumber.

This is the most valuable use of the tree, and I am building all sorts of things from it.

I will be writing a future post on how exactly you use a chainsaw mill to do this.

Projects Galore

The lumber it makes is great.  I have made shelves to hold a lot of our supplies inside the house, also you can do ‘live edge’ where you leave one edge of the board natural.  The shelves holding the laundry detergent are an example of this, and it is quite a nice effect in a rustic cabin.

Also, you can make entire buildings out of free wood.  This year I have built a new outhouse (for when we have guests again to avoid overloading the septic system) entirely out of wood I milled myself.

Long term plans include building a new shed on the property that I will outfit for having a quiet place to work down by the river, as well as serve a dual purpose as a place for guests to sleep when they visit.

The interesting coloring you see is an effect from the beetles.  It does weaken the wood a bit, but I just cut it a bit extra thick to counter for that.

A Bonus to Lumber

When you cut the trees into lumber, basically squaring them off, you actually remove the round slices of wood.  These aren’t very big, but they do add up.

So all of these pieces we slice up and they work perfect for firewood where you don’t want a long running fire.  So we use these for all of the summer and fall, and the occasional campfire.

Our Only Heat, Cordwood

The rest of the tree gets cut into firewood lengths right where I drop it.  We require at least six cords of wood up here to make it through an entire winter.  The stove runs 24×7 once we hit about October, so getting our own wood off of our own land is a huge cost saver.

I have about half of our wood for the year done, but want to take advantage as much as I can of getting ahead.  We have a woodshed to keep the wood dry, but it is open to let the wood dry out on the inside.  Wet wood does not burn cleanly at all and generates a ton of smoke, so it is important to properly cure it.

One of the best investments we made last year was to get a wood splitter.  Before this, I chopped it all by hand.  In one day now, I can get done what used to take me a week.  So it is a huge time, and back, saver.

The end result follows an old saying… ‘Chop your own wood, and it will warm you twice’.  The way we are doing it, I think it might be more like six times!  Living off the grid you definitely do not need a gym membership, so even more savings.

The Leftover Scraps

Unfortunately at the end, there is still a huge pile of branches.  This is especially true of the spruce trees compared to the lodgepoles.  There are tons and tons of fine branches that have to be cut off when you first cut down the tree, then piled up to remove them from the forest floor.

This last step is especially important to encourage new growth in the forest to replace all of these lost trees.  The goal here is to not only remove the fire danger, but encourage growth.

In most years, I would simply wait for a thunderstorm to pass, and light the piles in an open area immediately after while everything is very wet.  Unfortunately  this year, we are in a stage one fire ban.  So instead we have created a burn barrel by drilling air holes near the bottom in the side, and move it around from pile to pile feeding in the brush.  This is the safest way of getting rid of all this lingering fire hazard around our property.


Leaving the Land Better Than You Found It

The overall goal of this entire process is to try and help repair the damage the beetle has done to the woods.  In a natural cycle, there would be occasional forest fires that would burn down the largest trees, and thin the forest out.  Unfortunately there is such a huge load of these trees now that any fire would actually be too hot, and take out everything leading to flooding and erosion, and it would take many years for the forest to recover.

Interestingly, the beetles will not target a tree under a specific size.  So by removing all of these monster dead trees, we are taking the place of fire, and letting the next generation of smaller trees come in to take their place.

As you can see here, this small section I cleared in a single morning is now sunnier, and there are many small spruce trees that were hidden in the mess of dead branches.  They will grow and help the woods to recover returning it to its natural beauty.

By using every ounce of the wood I can, I also feel I am helping to not only clear things out, but use them for things I would otherwise have to take from somewhere else.

Plus there is a very real satisfaction every time I use the shelves, or even my outhouse, in knowing that all of the wood used to build this was dead trees on my property only a few months ago.  Creating something truly from scratch carries a very real pleasure.

In next weeks blog, I will talk about the challenges of data usage, video conferencing, satellites, and how to make it all work.

Thanks for joining me this week,

Jim Olsen

Off Grid CTO

A Highly Capable, but Low Power PC


Working on a Laptop Only Goes So Far….

Welcome again to my blog on working as the CTO of ModelOp while living off the grid at 10,200 feet in Colorado.  See my previous blog post for more details on how I got here, and feel free to peruse the About Me section for the background information on where I am, and how the place runs.

One of the first things I missed upon moving up to my off grid cabin is my desktop PC at home. It had 32 gig of memory, 4 monitors, an SSD drive, and it was really quite speedy.  I develop enterprise software in Kubernetes as microservices, so memory can become an issue between Kubernetes, IntelliJ, and all of the other items you need to run on your machine (Slack, etc).  It is doable on a 16 gig laptop, but really bogs down and building and deploying.

I had my slim laptop up here with 16 gigs of memory and a fairly fast processor.  It was great for business travel and working on a plane, but wasn’t really designed to be a primary development machine.  I also had a USB monitor so I had two screens, but really found it bogged down, ran very hot (causing it to throttle), and was generally slow on the builds and deployment.  If I kicked up a big build and a test run, I would have to put a USB powered fan behind it to keep it running cool.  Once a month had passed, and I realized we were going to be here for a bit, I determined I had to get something better up here.

The challenge is, however, I needed it to run on DC power, like a laptop.  I wanted as much RAM as I could, and wanted to use solid state storage, to save more power.  I also wanted it to be generally expandable, and be able to support multiple monitors.  It had to be as energy efficient as possible as energy is precious when off the grid.  I knew this was a big ask, but decided to dive deep to see what I could find.

I first looked at laptops, and found that most top out at the 16 gig of memory, and the ones that didn’t were large beasts that were crazy power hungry, and quite expensive and heavy, as they carried a battery that had to support their requirements.  Further, they usually had proprietary power requirements and connectors that made it hard to adapt to my DC environment.

Then I stumbled onto the solution…..

The Intel NUC

When I stumbled upon the Intel NUC, which stands for Next Unit of Computing, I new I had a real contender.  First off, they offered a barebones kit so I could build out exactly what I wanted.  Next off my list was it ran on a single DC voltage, being 19v.  This would allow me to do a simple conversion from either 12 or 24v.  Finally, it had some really great specs.

Intel NUC


Inside the NUC

A Powerhouse in your Palm

They offer a choice of a few processors, but I was really looking for a powerhouse, so I went with the top of the line.  They offer a Core i7 chip that has six cores, and 12 threads of execution.  More importantly, it is Comet Lake processor so when idle, it really sips on the power, but can power up and handle a big load when needed.

The memory options were great since you could go all the way up to 64 gig of memory, running at 2666MHz, using normal laptop memory.

It had solid state storage through an M.2 connector, which was my preference for speed, but also has space for a laptop drive as well if I ever needed more bulk type storage internally.

It would support up to 3 displays, including 4k support, and has a 1 gig ethernet port, WiFi 6, and tons of ports.  This thing literally is a desktop in the palm of your hands and was clearly the right choice for me.

Now to build the rest of it out, as I was starting with the barebones model…

  • Core I7-10710U, six cores, 12 threads 1.1 GHz Base, 4.7 GHz Turbo
  • 2 DDR4 RAM slots up to 64g Memory
  • 2 SATA ports, one is M.2, one traditional
  • 2 USB3.1 Type C, one supporting display port/thunderbolt 3
  • 3 USB3.1 Type A ports
  • HDMI/Ethernet/Wifi 6 802.11ax/Bluetooth 5

Memory to the Max

One of the biggest reasons for building this machine was to get more memory for running k8s and my development environment on the same machine.  Honestly, 32 gig would have been enough, but I figured since I was in this deep, I might as well max it out and buy memory just once, rather than multiple times.  Officially, Intel only supported one specific manufacturer’s memory.  I could find no information on the compatibility of any other modules, but did see some loose references to the corsair based memory.

So I decided to take a chance and go with the CORSAIR Vengeance 64GB (2 x 32GB) 260-Pin DDR4 SO-DIMM DDR4 2666 (PC4 21300) Laptop Memory Model CMSX64GX4M2A2666C18. 

It was cheaper than the suggested memory, and was in stock.  This would get me fully populated up to the 64 gig max.

Corsair Memory, 2 32 gig Modules

Fast Low Power Storage

For storage, I didn’t need something huge, just sufficient.  I definitely did not want a spinning disk, due to the power usage, and wanted solid state for sure.  With the M.2 slot available, I decided to go that route as it should provide me the fastest storage.

Looking at costs, Intel actually had a great solution in the Intel 660p M.2 2280 1TB NVMe drive (SSDPEKNW010T8X1).  It would fit nicely in the full length slot, and with 1TB, that is plenty of space.  I keep my media on my plex server with a 5TB drive, so I just need space for my documents, code, etc.

I also have USB 3.0 drives up here if I really needed to do something to store more stuff, and still had the laptop drive slot if I wanted to get a larger SSD at some point.  This would be good for now.

Intel 660p 1TB

Time to Interface With the Computer

Finally, I needed to interface with the computer somehow.  I already had a USB 3.0 monitor I was using with my laptop (ASUS MB169B+).  It works OK, and is useful, but the color rendition is not great.  So it makes a great portable monitor, but is not nearly as sharp as I would like.

So I expanded and got a USB-C based portable monitor that is a gaming monitor so is quite sharp and clear.  I ended up with the MSI Optix MAG 161V.  It is clear and sharp.

I think my next upgrade will be to replace the USB monitor with a portable USB-C 4k monitor as several have now come out.

It is nice to have the portable monitors, as it is a small cabin, and I can just quickly stack them together at the end of the day, and it only takes a minute to set them up again.

Asus USB3 Monitor

MSI USB-C Monitor

Putting it All Together

I finished it off with a cherry switch based gaming keyboard, as I prefer mechanical switches. In the early morning hours though, I am sure my wife would prefer a membrane based keyboard…  Then I already had a Logitech Bluetooth based trackball for my mouse.

As you can see, it sets up nicely on the table and gives me a small footprint multi-monitor solution that is really a very productive machine, and I have a great view of the woods while I work.  My largest distraction is the 20+ hummingbirds buzzing outside the window all day long.

The Complete System all Setup

The Results

Well let’s get back to my original goals.  First and foremost, I needed it to be a significant improvement over my laptop for development, while balancing that with the power requirements.  I think it was overall very successful.

You will see my power measuring device quite a bit in these series.  You really can’t rely on any specs you see out there for determining what any given device actually uses, as they will always state the maximum, without looking at the overall usage.  This simple device gathers not only the reading at the instant, but also gathers use over time so you can tell how much your device will gather in a day.  I will go more into this in a later blog post on indispensable tools.

At idle running two monitors and just with normal slack, emails, browser, and IntelliJ up, it sits at around 23 watts of power, which is very low.  So all good on that.

At running a big compile, including building docker images and deploying them to k8s, we can see that it ramps up to a maximum of just about 100 watts, which is still very reasonable.  So on the power front, we have a winner.

As far as performance goes, most of the benchmarks out there I find to be pretty synthetic and don’t really give you much to go on.  So instead, I just am comparing the actual real world usage over my laptop, and the gains were very significant.  Our microservices based solution would load onto k8s in about half the time as on the laptop, without any overheating problems, and compiles were a fraction thereof.  Further, responsiveness was crisp using productivity apps while under load.  So for sure it met my needs.

Both Screens On At Idle

Both Screens and Compiling Under a Heavy Load

Answering the Question I Know Someone Will Ask

So I know someone is going to notice that I am running Windows 10 pro on my machine, and is going to ask me about why I choose that for development.

First off, Mac does not have a comparable offering in this space that I can build up myself and modify as I go.  That is just not their market.

Linux is great, and in fact as I will explain in a minute, I use Linux extensively.  But being at the exec level, I constantly am dealing with Microsoft Office documents.  It’s just the way the world works, and it is unavoidable.  Rather than deal with incompatibilities and such with open source solutions, I just go along with it.  There are bigger battles to fight.

Finally, with this spring’s release, MS introduced WSL2 (Windows Subsystem for Linux 2).  It is a game changer for me, in that Kubernetes now supports this.  What this means is I don’t have to run a VM for my k8s instance, so there is no pre-allocated memory.  It shares the memory with the rest of the OS so I can run all of my docker images in native linux, and have it share the space with Windows.  It really is quite nice so far, and gives me the most bang for my buck.

Plus, I do get linux right on the box and run Ubuntu shells and do a ton of my work there.  So for now, anyways, it really does give me the best of all worlds in that I can blend the productivity apps that I have to use, with the Linux I love to use.

In next week’s blog, we will diverge from the tech side of thing, to a bit about managing the land up here.  I will talk a bit about how beetle kill has devastated the area, and how I am doing my best to put it to good use….

Thanks for joining me in this second blog,

Jim Olsen

Relaxing by the Fire in the Morning

Welcome to Off Grid CTO!

Living Off The Grid as a CTO

Let me first introduce myself.  I am Jim Olsen, and have recently been living off the grid full time, working as the chief technology officer for a high tech startup, ModelOp.  We develop software for managing your AI models and business, and are on the forefront of the recently identified ModelOp space.

Many of us work remote from home, given our talent pool that is from all over the country.  We hire the best of the best!

Despite working from home, I always needed to be near a major airport, as I traveled often to meet with customers and to attend events.  This meant I could not be full time at my cabin, as it is quite a ways from a sizeable airport.

Then in March, the world changed.  Travel was no longer a thing, grocery stores were out of food, and my county went into a full lockdown restricting travel to only essential needs.  My wife and I talked, and it was time to move to the cabin where there was more fresh air, 14 acres of space, and a simpler way of living.

This blog is to talk about the challenges you will encounter working from truly remote, and how I have overcome them.  We will talk through equipment I have used (both high tech computing, and low tech tools to make living easier), projects I have built, and how you can do it all while working under the demands of being a CTO.

In this first post  I will introduce you to our background story before we dive into detailed posts about how you can live off the grid and work in the high tech space.


Moving Up to the Cabin

The cabin is at 10,200 feet, and in March the road is closed for approximately six miles.  In the summer it melts out, but at this time of the year there is over six feet of snow on the ground.  Fortunately, we had just purchased tracks for our UTV the previous fall, and were ready to go and head up there.  We loaded as much supplies as we could get in the truck, put the cats into their carriers, and loaded up the UTV on the trailer.  We were ready to head on in.

When we left our house, there was a fresh coating of snow, that was of course, not in the forecast.  We wanted to start early to give ourselves plenty of time to make the journey on the snow.  So at 4am, we were brushing snow off of the truck, loading cats into the back seat, and getting ready to say goodbye to our home, at the time, for a few weeks or so…

Fortunately as we headed down the road and got away from the mountains, the sun came up, things warmed up, and the travel became smooth.  We planned our only stops to be for gas, and to minimize contact where possible, as nobody new really how far it had spread.  We were in a world we knew nothing about, and were being cautious.  The truck was heavy between towing the UTV/trailer, and the fully loaded truck bed of supplies.  Progress was slow, but steady.

Once we arrived at the trailhead, where the road was closed for the winter, we unloaded the UTV off, loaded the back up with as much as we could carry in one load, put the cats into the heated cab up front, and begin our trek up the mountain in fresh snow with no tracks.

Over the River and Through the Woods

The trail was covered with fresh snow, which provides the challenge of knowing exactly where the road lies.  If you get off of the packed surface, you can end up in deep snow and can very easily get stuck.  When hauling so much weight, you don’t want to be trying to winch yourself out of a snow drift.  So the first trip up was with some white knuckles as we slowly progressed along the six miles.

We arrived at the cabin safely with the first load.  When you have been gone for a couple of months, the entrance is buried in snow.  So with my wife and cats tucked away in the warm cab, I dug out the entrance to the cabin, burst inside, and started the wood stove to begin the long thawing process.  We both unloaded all of the cargo, and I turned around to go get another load, while my wife unpacked and prepared the cabin for our first night alone in the wilderness.



Digging Out

Well we arrived on a Friday, so the rest of the weekend was spent digging out, and settling in.  The cats did not move from the woodstove for the first day or so, as it takes a long time to heat up the structure of the cabin and have it truly feel warm.

The roof had quite a few feet of snow on it, as you can see above, and that takes some real effort to remove safely.  Fortunately, when the snow is that deep, you don’t even need a ladder as you just walk up onto the roof from the snow!

The deck had a similar amount of snow on it as well, which all had to be removed by hand.  So my back was kind of sore after the first day of activity.  We were now set to spend the few weeks we figured we would be staying in comfort.

The next day was spent pumping up water from the river to our storage tank, so that we would have water in the cabin.  We have a gravity feed system in the summer, but at this time of year it is frozen up, so we use a gas powered water pump from the more major river below us to fill the storage tank.  Plus we always keep a big pot of snow on the woodstove to provide us warm water.  Things were again feeling comfortable.  We were separated from the chaos of what was going on in the world, and our nearest neighbor was 12 miles away, given no other cabins up here were occupied.  It was quiet, and there was somewhat a sense of relief and a guilty pleasure in it all.


Settling in for a Few Weeks

Well we were all set to stay for a month and just let things pass.  We figured it would be a great time to concentrate on work, with no distractions, no trips out, and just the beauty and quiet of the woods.  It seemed the best way to take advantage of a bad situation.

Sure enough, a few weeks past, things were worse, travel restrictions now prevented us from leaving, and we decided to stay a bit longer.  We figured out some things we needed, started to make adjustments of how we do our day to day jobs, and really started to get it figured out how this would all work in the ‘new normal’.

There were heavy restrictions in the local towns, and we did not even leave for groceries for the first six weeks.  Our only trips out were an occasional trip to the local post office to grab our mail from the po box, and to pick up some gas at the local trading post along with a few treats.  We were now in this for the long haul, and figuring it all out together as a couple, and working in my role as a CTO.

So here we are now, and it is July 21st.  Things have eased up quite a bit, but there are still many challenges out there.  I have been operating as CTO up here meeting with clients, staff, and many others since the middle of March.  All has gone pretty smoothly up here, but there were definitely hiccups along the way.

It is some of these hiccups and how I dealt with them, along with tips and tricks that I wish to share with you.  I have had many people reach out to me asking about how it is all done, so I thought I would share with everyone my lessons learned.  I hope you will enjoy sitting in with me on these stories.

Now that we have the background story, next time we are going to get a bit more technical and go into my first challenge.  Working on a laptop when you are building enterprise software can be done, but it is challenging.  So I sought out how to build a high memory, low powered, desktop type machine and built it up here.  We will do a breakdown on what I chose, how we power it, and how it performed.  The results were actually amazing!

In the mean time, feel free to get more background information by reading my  About Me section of my website to see how all the basics work.

Welcome Aboard!

Jim Olsen


Newer posts »

© 2022 Off Grid CTO

Theme by Anders NorenUp ↑