All posts by Mooky Desai

Sandstone Canyon

Down in Ocotillo Wells, CA, there is a neat little offroad excursion to explore called Sandstone Canyon.  From the San Fernando Valley, you start by heading down the I-5 south. Take the 210 East and then the 10 East. Around Indio, keep right and take the 86 South. Follow the signs for Brawley/El Centro/865 Expressway. Turn right onto CA-78 and follow the signs for Ocotillo Wells. When you get to Split Mountain Road, make a left.

The trailhead for Sandstone Canyon is at:

Lat: 33.038973
Lon: -116.096849
Be careful if you are going after a rainfall as flash floods are common in the area.

Perseid Meteor Showers – Gorman,CA

The annual Perseid Meteor Shower was this past weekend and it was the first time in about 25 years since the skies were as dark as they were this year (no Moon). The peak, which is generally around the 12th of August, also happened to be on a weekend this year. We packed our toy hauler and the kids (and our new puppy, Benny!) and rolled us out to the desert for some good viewing where the light pollution was minimal. We setup the patio on the trailer, threw out some blankets and pillows and watched shooting stars fill the night sky, We had a blast. I didnt catch any pictures of our viewing party but here are some video of my daughters on their quads while we were out there.

The Jeep Story – Bumpers

The Jeep Wrangler Unlimited Rubicon in standard trim comes with plastic bumpers. We dont have a “Special Edition” Rubicon. There are a number of special edition Wranglers that came with steel bumpers from the Anniversary Edition to the 2017 Winter Edition. One of the most common aftermarket upgrades to most Jeeps are the bumpers. While the stock bumpers are lightweight and offer legal coverage, they often limit approach/departure angles and as a result, suffer casualties on the trails. Its difficult to attach lights and winches and any other gear you may need. The standard tire carrier on most Jeeps are also mounted on the rear tailgate so offloading the extra weight of the bigger tires to the bumper is a better option.  As far as I can remember, there havent been any stock Wranglers offered with a bumper mounted tire carrier. There are a number of quality aftermarket bumper manufacturers on the market today. Some of the more popular quality ones include Poison Spyder, Fab Fours, and GenRight Offroad. Most offer a bumper mounted tire carrier. Many of these are built for serious rock crawling duty and offer a great look, great protection, and even more clearance for your adventures.

For my build, after looking at a lot of pictures online and making the decision that we were building a Jeep that was mostly for overlanding adventures, we decided to stick with the same company that has been providing Jeep with bumpers for their special edition vehicles for years and the same manufacturer that we bought our suspension lift from, American Expedition Vehicles (AEV). One of the reasons we chose AEV was because of its history. They have been in business for quite some time and the fact that Jeep turned to THEM to provide parts was quite telling. More recently, Chevrolet gave the official nod to AEV with the release of the Colorado ZR2 Bison.

The rear bumper really caught our eye. Instead of tacking on 3 or 4  “jerry cans” or RotopaX for extra gas and water, AEV allows for 5 gallons of water in the bumper itself and another 10 gallons of gas in a nice tank tucked behind the spare tire (see pics below). The bumper mounted tire carrier also has an integrated Hi-Lift Jack mount, an integrated Pull-Pal mount, nice mount for a shovel, and mounts for rear lights as well as the CHMSL. All without looking like I’m Mad Max running through my concrete jungle. They look like they were designed and installed at the factory and it even has a nice winch mount on the front bumper that nicely hides my Warn Zeon 10-S. The bumpers are full width and the front bumper has a nice hoop and also comes with mounts for 2 driving lights. While you can get away with 6″ IPF lights from ARB or someone similar, I will probably opt for a Rigid Adapt light bar or two 7″ ARB Intensity’s. That is still TBD and may show up in a next post. Until then, thanks for reading and enjoy the pics!

Stock Front Bumper (Before):

AEV Front Bumper (After):

Stock Rear Bumper (Before):

AEV Rear Bumper with Tire Carrier, Fuel Cell, and Hi-Lift Mount:

Closer look at the Hi-Lift Mount (and FireStik CB Antenna):


NetApp A800 Specs

NetApp introduced its flagship model, the A800 and ONTAP version 9.4 which included a number of enhancements. Some details are below.

48 internal NVMe drives – 4U

1.1 Million IOPS – 200-500 microsecond latency

25 GBps sequential reads/sec

Scales 12 or 24 nodes (SAN/NAS respectively)

12PB or 6.6M IOPS for SAN (effective)

24PB or 11.4M IOPS for NAS (effective)

Nearly 5:1 efficiency using dedupe, compression, compaction, and cloning

Support for NVMeoF — connect your existing applications using FC to faster drives. Increase performance vs FC connected devices by 2x.

FabricPool 2.0 allows for tiering cold data to Amazon, Azure or any object store such as StorageGRID. You can now move active filesystem data to the cloud and bring it back when needed.


The Jeep Story – Steps (cont’d)

After some careful research on form and function, we opted to purchase some rock sliders/steps from GenRight Offroad. I chose these since they offered the most coverage for my Jeep, double as a step, came in a nice textured black powder-coated finish, and they are made close by in Simi Valley, CA.

These were available in a lightweight aluminum but strength is always an issue vs. steel. GenRight offers something called a Rash Guard. These $250 pieces bolt over the Rocker Guard and take most of the beating and add some strength to the setup. Overall, it is still lighter than the steel solution and its riveted design looks great too.

My friends recently took my family and I up to Big Bear, California and signed us up for a guided Jeep tour. We took a trail called Little John Bull and despite my best efforts, I came crashing down on my brand new guards along the way. First war wound. I am happy to say that it did not even dent the rash guard. There are scuffs on the powder coating as expected…but no denting. If I ever want to replace the guards where the rock hit, its just the $250 rash guard that needs replacing. The guards are highly recommended and are not available on all online sites (nor is the textured powdercoat option!). Call GenRight, they are great folks (I drove there).

While I do miss the convenience of a step lowering down so I dont have to climb in/out of the Jeep, I have to say that having the peace of mind that nothing is going to break (aka AMP PowerStep motors) while I am off-road is a decent trade-off. RockSlide Engineering makes a set of power steps that double as rock guards. With all the pieces to make it work properly, it would have been more money out of my pocket and I’m still worrying about motor life. I ended saving a few hundred bucks on the GenRight solution vs. my AMP steps but none of this was about cost really. I wanted a solution that protected my Jeep well, looked clean, and matched my AEV bumpers and wheels. The rivets also happened to compliment the beadlock bolts. GenRight fit the bill. We are 100% happy.

Enjoy the pics and let me know what you think!


SolidFire Install Notes and Guide

I had the pleasure of installing a 4-Node SolidFire 19210 recently. While the system was being used strictly for Fiber Channel block devices to the hosts, there was a little bit of networking involved. There are diagrams below that detail what I have explained for the most part if you want a TL;DR version.

The system came with 6 Dell 1U nodes. 4 of the nodes were full of disks. The other two had no disks but extra IO cards in the back (FC and 10Gb).

First step was to image the nodes to Return them To Factory Image (RTFI).  I used version 10.1 and downloaded the “rtfi” ISO image at the link below.

With the ISO you can create a bootable USB key:

  1. Use a Windows based computer and format a USB key in FAT 32 default block size. (a full format works better than a quick format)
  2. Download UNetbootin from
  3. Install the program on your windows system
  4. Insert USB key before starting UNetBootin
  5. Start UNetBootin
  6. After the program opens select the following options:
  7. Select your downloaded image […]
  8. Select Type : USB drive
  9. Drive: Select your USB key
  10. Press okay and wait for key creation to complete (Can take 4 to 5 minutes)
  11. Ensure process completes then close UNetBootin once done

Simply place the USB key in the back of the server and reboot. On boot, it will as a couple of questions, it will start installing Element OS, and then shut itself down. It will boot up into what they call the Terminal User Interface (TUI). It will come up in DHCP mode. If you have DHCP, it will pick up an IP address.  You will be able to see which IP it obtained in the TUI. You can use your web browser to connect to that IP. Alternately, using the TUI, you can set a static IP address for the 1GbBond interface. I connected to the management interface on the nodes once the IPs were set to continue my configs although you can continue using the TUI. To connect to the management interface, go to https://IP_Address:442. As for now, this is called the Node UI.

Using the Node UI, set the 10Gb IP information and hostname. The 10Gb network should be a private non-routable network with jumbo frames enabled through and through. After setting the IPs, I rebooted the servers. I then logged back in and set the cluster name on each node and rebooted again. They came back up in a pending state. To create the cluster, I went to one of the nodes IP addresses and it brought up the cluster creation wizard (this is NOT on port 442 instead, port 80). Using the wizard, I created the cluster. You will assign an “mVIP” and and “sVIP”. These are clustered IP addresses for the node IPs. mVIP for the 1GbBonds, and sVIP for the 10GbBond. Management interface is at the mVIP and storage traffic runs over the sVIP.

Once the cluster was created, we downloaded the mNode OVA. This is a VM that sends telemetry data to Active IQ, runs SNMP, handles logging and a couple of other functions. We were using VMWare so we used the image with “VCP” in the filename since it has the plugin.

Using this link and the link below, we were able to import the mNode into vCenter quickly. Once it had an IP, we used that IP to connect to port 9443 in a web browser and register the plugin to vCenter with credentials.

I then connected to the mVIP and under Clusters–>FC Ports, I retrieved the WWPNs for zoning purposes.

Your SAN should be ready for the most part. You will need to create some logins at the mVIP along with volumes and Volume Access Groups. Once you zone your hosts in using single initiator zoning, you should be able to scan you disk bus on your hosts and see your LUNs!

As mentioned there were some network connections to deal with. My notes are below.

I am not going to cover the 1GbE connections. Those are really straight forward. One to each switch. Make sure the ports are on the right VLAN. The host does NIC teaming. Done.

iDRAC is even easier. Nothing special. Just run a cable from the iDRAC port to your OOB switch and you are done with that too. IP address is set through the BIOS.

FC Gateways (F-nodes)

These nodes have 2x 10Gb ports onboard and 2x 10Gb ports in Slot 1 along with 2x Dual Port FC cards.

For the FC gateways (F-nodes), there were 4x 10Gb ports on each node. 2 were onboard like the S-nodes and 2 are in a card in Slot 1.

From F-node1, we sent port0 (onboard) and port0 (card in slot 1) to switch0/port1 and port2. From F-node2, we sent port0 (onboard) and port0 (card in slot 1) to switch1/port1 and port2. We then created an LACP bundle with switch0/port1 and port2 and switch1/port1 and port2. One big 4 port LACP bundle.

Then, back to F-node1, we sent port1 (onboard) and port1 (card in slot 1) to switch0/port3 and port4. From F-node2 we sent port1 (onboard) and port1 (card in slot 1) to switch1/port3 and port4. We then created another LACP bundle with switch0/port3 and port4 and switch1/port3 and port4. Another big 4 port LACP bundle.

We set private network IPs on the 10g Bond interfaces on all nodes (S and F alike). Ensure jumbo frames is enabled throughout the network else you may receive errors when trying to create the cluster (xDBOperation Timeouts). Alternately, you can set the MTU for the 10GBond interfaces down to 1500 and test cluster creation to verify that jumbo frames are causing issues but this is not recommended for a production config. It should simply be used to rule out jumbo frames config issues.

As mentioned, each F-node has 2x Dual Port FC cards. From Node 1, Card0/Port0 goes to FC switch0/Port0. Card1/Port0 goes to FC switch0/Port1. Card0/Port1 goes to FC switch1/Port0 and Card1/Port1 goes to FC switch1/Port1.

Repeat this pattern for Node 2 but use ports 2 and 3 on the FC switches.

Storage Nodes (S-Nodes)

On all S-nodes, the config is pretty simple. Onboard 10Gb port0 goes to switch0 and onboard 10Gb port1 goes to switch1. Create an LACP port across the two ports for each node.

If the environment has two trunked switches, where the switches appear as one, you must use LACP (802.3ad) bonding. The two switches must appear as one switch, either by being different switch blades that share a back-plane, or have software installed to make it appear as a “stacked” switch. The two ports on either switch must be in a LACP trunk to allow the failover from one port to the next to happen successfully. If you want to use LACP bonding, you must ensure that the switch ports between both switches allow for trunking at the specific port level.


There may be other ways to do this. If you have comments or suggestions, please leave them below. If I left something out, let me know.

Some of this was covered nicely in the Setup Guide and the FC Setup Guide but not at length or detail enough. I had more questions and had to leverage good network connections to get answers.

Thanks for reading. Cheers.

The Jeep Story – Steps

My wife and I are not tall people. We also have 2 young daughters. Our 2014 Rubicon came with stock rocker guards. No steps like the Sahara model. While these worked good for protecting the side of the Jeep, they didn’t provide us with a step after we lifted the Jeep 3.5 inches. It was pretty tough to get in and out of. We didn’t have plans to do too much rock crawling so we didn’t need hard core rock sliders.  After looking at all the options on the market, we decided we liked the look of the AMP Research PowerStep running boards. These are power steps that deploy when the door is opened and retract back up once the doors are closed. When they deploy, they also provide a nice set of LED lights to illuminate the running boards. AMP had just released a dual motor version of the steps called the PowerXtreme. With a ruggedized texture to provide more traction when wet or covered with mud or snow, these really fit the bill since we snowboard often and camp in the dirt and mud. They cost about $1800 and they were a blast. The kids loved them, the wife thought they were awesome…

…until they didn’t work all the time. Unfortunately, these became the first casualty of the build. After working with my shop to get the first controller swapped out, it too began working intermittently. LUND who owns AMP has great support. I worked with them and they sent me the most current version of the controller. They didn’t even put me through the hassle of sending the old controller back. Sadly enough, that one failed too and I had to send them back to Extreme Terrain. Again, LUND made this very easy despite some initial push back from Extreme Terrain. Both were extremely helpful with the whole process in the end. It took about a couple of weeks to get the funds back into my account but I was on the prowl for some non-electric replacements. I’m looking at some grab handles too. Like I said, we are not of the tall variety.

More to come.

Mining Ethereum (locally)

I setup my own Ethereum-based blockchain this morning and mined some ether. I created two accounts (wallets) and passed Wei (ether “pennies”) back and forth to each other and performed mining in-between to verify the transactions (aka move the money).

  1. Download geth
  2. Unzip it
  3. Initialize geth using this genesis.json file (strip the .zip extension off the filename)

geth –datadir=./datadir init genesis.json

4. Create an account:

geth –datadir=./datadir account new

5. Start the java console:

geth –datadir=./datadir console

Mine some ether!


INFO [01-23|11:45:55] Updated mining threads                   threads=1

INFO [01-23|11:45:55] Transaction pool price threshold updated price=18000000000


> INFO [01-23|11:45:55] Starting mining operation

INFO [01-23|11:45:55] Commit new mining work                   number=1 txs=0 uncles=0 elapsed=88.981µs

INFO [01-23|11:46:04] Generating DAG in progress               epoch=0 percentage=0 elapsed=7.167s

INFO [01-23|11:46:11] Generating DAG in progress               epoch=0 percentage=1 elapsed=14.543s

INFO [01-23|11:46:18] Generating DAG in progress               epoch=0 percentage=2 elapsed=21.008s

INFO [01-23|11:46:24] Generating DAG in progress               epoch=0 percentage=3 elapsed=27.073s

INFO [01-23|11:55:54] Generated ethash verification cache      epoch=0 elapsed=9m57.721s

INFO [01-23|11:56:00] Successfully sealed new block            number=1 hash=9c9452…2b3045

INFO [01-23|11:58:51] 🔨 mined potential block                  number=18 hash=c0b3d4…823d41

INFO [01-23|11:58:51] Commit new mining work                   number=19 txs=0 uncles=0 elapsed=205.898µs

INFO [01-23|11:58:52] Successfully sealed new block            number=19 hash=8940d2…e026a6

INFO [01-23|11:58:52] 🔗 block reached canonical chain          number=14 hash=e08f17…b69966

INFO [01-23|11:58:52] 🔨 mined potential block                  number=19 hash=8940d2…e026a6

INFO [01-23|11:58:52] Commit new mining work                   number=20 txs=0 uncles=0 elapsed=116.913µs


You should have some ether in your wallet now!

Check your balance:


get string

eth.getBalance(“paste string”)

or to see balance in ether:

web3.fromWei(eth.getBalance(eth.accounts[0]), “ether”)


Create a second wallet:


Make sure the new wallet exists:

> eth.accounts
[“0x28a3a7967d16e51b3a38c7ae12c9e036472e07ad”, “0x2765108503bbda744203d8c9d3d744 c355f2453d”]

Move 100 from wallet “0” to wallet “1”:

Unlock the sending wallet first:

(personal.unlockAccount(eth.accounts[0], “password_for_wallet“)

Send 100 ether:

eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(100, “ether”)})

Performed some more mining to move the money (verify)

> miner.start(1)

INFO [01-23|12:17:30] Updated mining threads                   threads=1

INFO [01-23|12:17:30] Transaction pool price threshold updated price=18000000000


INFO [01-23|12:17:30] Starting mining operation

INFO [01-23|12:17:30] Commit new mining work                   number=49 txs=1 uncles=0 elapsed=269.401µs

INFO [01-23|12:17:37] Successfully sealed new block            number=49 hash=cdd60d…09413f

INFO [01-23|12:17:37] 🔗 block reached canonical chain          number=44 hash=4f6fd6…898d8a

INFO [01-23|12:17:37] 🔨 mined potential block                  number=49 hash=cdd60d…09413f

INFO [01-23|12:17:37] Commit new mining work                   number=50 txs=0 uncles=0 elapsed=135.258µs

> miner.stop()

Check balances:

> web3.fromWei(eth.getBalance(eth.accounts[0]), “ether”)

155 (note 15 additional coins from mining work to vfy txn!)

> web3.fromWei(eth.getBalance(eth.accounts[1]), “ether”)



Transaction details:

> eth.getTransaction(“0xef3f9391e569ff205768d3e27bf7cf73308c5e8de0859b4e8fe096c26ba53”)


blockHash: “0xcdd60d0b3722adc0fba3c4956a02f8e6120b717371d335f6ae6849a09413f”,

blockNumber: 49,

from: “0x28a3a7967d16e51b3a38c7ae12c9e036472e07ad”,

gas: 90000,

gasPrice: 18000000000,

hash: “0xef3f9391e569ff205768c68d3e27bf7cf73308c5e8de0859b4e8fe096c26ba53”,

input: “0x”,

nonce: 0,

r: “0xf5981cbee6da86dc162787a8814d8dc30a874f3777228cdc1d03a20de10776b2”,

s: “0x7e3606f0e791493e166212dbec20161aa0aa6cec594bfb82214ed91cb000ff”,

to: “0x2765108503bbda744203d9d3d744c355f2453d”,

transactionIndex: 0,

v: “0xed”,

value: 100000000000000000000



Block details:

> eth.getBlock(“0xcdd60d0b22adc0fba3c4956a02f8e64ed120b717371d335f6ae6849a09413f”)


difficulty: 131072,

extraData: “0xd7830107038467657487676f312e392e32856c696e7578”,

gasLimit: 329424,

gasUsed: 21000,

hash: “0xcdd60d0b3722adc0fba3c4956a02f8e64ed120b717371d335f6ae6849a09413f”,

logsBloom: “0x0000000000000000000000000000000000000000000000000000000000000000                                                                                                                                                             00000000000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                                                                             00000000000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                                                                             00000000000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                                                                             00000000000000000000000000000000000000000000000000000000000000000000000000000000                                                                                                                                                             00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”,

miner: “0x28a3a79d16e51b3a38c7ae12c9e036472e07ad”,

mixHash: “0x52f1d43a0d0f20de558ae892bd0be8d4f39231f73569a03a70d9274be9f475”,

nonce: “0x736267a32012d9”,

number: 49,

parentHash: “0x823fe9ab5c194169a5321193bbe61357cf56f958ed77f5d23ad9018b0b602b”,

receiptsRoot: “0xb91d6e796beda886fc0ea068b01d824a2a57f9ab48457046c3410feeaa0198”,

sha3Uncles: “0x1dcc4de8dec75d7aab85b567ccd41ad312451b948a7413f0a142fd40d49347”,

size: 651,

stateRoot: “0xfdc68f56dfd304be1405ccecc0f25eb70b5db2bf78f173e12022dbbd39bf20f9”,

timestamp: 151672750,

totalDifficulty: 644896,

transactions: [“0xef3f9391e569ff205768c68d3e27bf7cf7335e8de0859b4e8fe096c26ba53”],

transactionsRoot: “0x356c5cacb2a696f43a194473badaa8fa5ec1c2fef6e0e1b9cc341e569ec1”,

uncles: []


This is step one for creating my own DAPP.  Hopefully this helps you.

If you have any questions, comments, or suggestions, let me know.


The Jeep Story – Lift Kit

Clearance! We needed more ground clearance. The curb at our house was nearly as tall as the bottom of the stock sliders. We wanted to install some nice big 35″ mud terrain tires. There were a couple of options. Get some bigger fenders and some leveling blocks or take the dive (aka spend the money) and get all new springs and shocks with a lift kit. We wanted to do it the right way so we decided on the “lift kit” route. I started doing some research. I visited a couple of shops around my area and felt like I was just being pushed to buy their vendor of choice. JKS here, ProComp there…I didnt like it.

After days of perusing the internet, I decided on a company called American Expedition Vehicles (AEV). They have a long reputation of making quality OEM fit and finish parts for Jeeps and Rams. More importantly, they do a lot of B2B sales. In fact, Jeep themselves called on AEV to provide bumpers for certain special editions (MW3) that rolled off the factory floor. Another nice part about the AEV kit is that it came with everything needed to properly lift the Jeep without changing the ride too much. Cheap lift kits can be a nightmare, cause bump steer, and just generally be unsafe at speed. Since my wife and kids were going to be in here primarily, I didnt want to take any chances. The AEV DualSport RS kit was roughly $2500 bucks and it included a set of Bilstein 5160 shocks with remote reservoirs. It provided 3.5″ of lift and plenty of clearance for the 18″ Method Vex wheels wrapped in 35″ Toyo Open Country MT (Mud Terrain) tires.

This is what it looked like when we brought her home from the shop.

We were happy with our decisions and were ready to get it ready for some off-roading and overland adventures!