On a dry July

Today marks 27 days without alcohol. I decided to abstain for the month of July, following a bit of a public bender at the end of last month. The last time I went more than a day or two without drinking was January of last year, following a pretty late New Years Eve/Day drinking session. I’ve got a pretty complicated history with alcohol, as I’m sure some do, and I’m addiction-prone as well, but I’m not sure how unusual that is, when it comes down to it.

One of these days I’ll probably come round to a full accounting of all the crazy, fucked-up shit that I’ve done over the years, but for now I’ll just stick to the last few months. I’m not sure how much of a memoir I want this blog to become, or whether I want to de-anonymize it at some point in time. Suffice to say, I love the drink, I love(d) to smoke, I love whatever it is that I like to do and I will do it as much as I possibly can. Let’s just say for now, that about a year ago, I came to the conclusion that my alcohol consumption was a problem. Not that I hit rock-bottom or anything like that — that happened years ago — but it was just the ramifications of my daily consumption, on both my health and my wallet. I actually had my doctor prescribe me naltrexone to help me cut down. I didn’t want to quit. I like drinking, I didn’t want to cut alcohol out of my life completely, I just didn’t want to get to a place where I get hammered out of my mind and blackout or worse. I’ve been lucky not to kill myself or someone else, but I recognized that it was probably just a matter of time before I did.

It’s such a shitty thing to say that the main reason I cut it out was that it was costing me too much. I’ve acquired a taste for IPAs over the past few years, and the prices have been creeping up to around twelve dollars a six pack. It got expensive, and I was stopping by the store on the way home pretty much every day. The cost was getting out of hand. Trying to limit myself to three a night or whatever rationalizing I was telling myself just wasn’t cutting it. And when I gave myself permission to let loose — I let it go.

So when I told myself eighteen months ago that I was going to do a Dry-ruary or whatever they call it, I did it, no problem. I’m sure my wife was as shocked as me that I didn’t got into the DTs, or have any withdrawal symptoms, but no. The only real negative from the whole experience was trouble falling asleep. I do recall that I couldn’t wait for the month to be over, and I celebrated the day with a cold one out with my wife for one of our semi-regular Friday happy-hours before picking up the kids.

This time, I don’t feel that same way. Someone actually gifted me a bottle of scotch last week — not knowing — and I don’t even really look forward to drinking it. I may just keep going, and see how long I can go. It’s possible that I just traded one habit for another, gave up a vice for a virtue. Who knows what will happen.

On meditation

This morning I did my first 60-minute meditation session. I’d was listening to Naval Ravicant on Joe Rogan’s podcast a few weeks ago and he made a challenge for listeners to do 60 minutes for 60 days, and it’s stuck with me since I first heard it. I don’t know when I first started meditating, but I can say with certainty that I started making it a habit back in November, and I’ve been doing it almost every day since then. 

Back in the late 90s I bought a copy of Zen and the Brain, by neuroscientist and Zen practitioner David Austin. I was a bit of neurobiology nerd back in high school when I was taking AP biology, and started becoming interested in how the brain and consciousness works. This was probably following my first acid trip. The book described the work of comparative studies between the brain images of Buddhist monks and people who did not practice meditation. There were notable differences in the size of certain areas of the brain, as well as the brain activity of the monks when they were practicing their meditative state. I don’t recall trying to meditate myself. There was always debates about how long was effective — David Lynch was quoted somewhere that he felt the minimum effective dose was somewhere around 45 minutes, 20 was too little. 

I tried some stints over the past few years. I recall doing a couple 45 minute sessions at some point, but it never stuck. I never really liked the guided meditations.  And the apps with the cricket or forest backgrounds got too distracting when I started to notice the loops. It wasn’t until I started Sam Harris’s Waking Up app that it became a regular habit. The 10-minute sessions were short enough that I didn’t have any excuses not to do it. They were interesting enough, and Harris’s secular approach clicked with me, as well as his promise that one could arrive instantaneously to the place where the illusion of the self was apparent. Not that one would necessarily stay there for very long, of course, but that it was as fast as the sound of him snapping his finger. 

That was enough to get me going, and it was apparent over the first few weeks that something was happening.  It’s subtle, but effective, and about a month ago I decided that I didn’t want the guided meditations anymore, and decided to go from 10 to 30 minutes on a simple timer. I’ve been getting up at 5 or 6 in the morning, and going outside, weather permitting, and sitting quietly on a cushion.  A week or two ago, after talking myself into Naval’s challenge, I started ramping up by a minute or two each day, then to 45 yesterday and 60 this morning. I told my wife this morning, and she asked me how I felt. I shrugged my shoulders, cause there wasn’t really anything to say about it. It’s not really about feeling a certain way, but it’s about making changes in your brain so that you’re different when you’re not meditating. 


I’ve tried to get my kids to start the habit. We’ve got a couple of children’s books about the subject, one called Moody Cow, and another about a dog that chases his tail. Sam Harris’s wife Annica has some guided meditations for children, I was able to get them down for a 5-minute breath exercise one or two times. But the best thing I think is for them to see me doing it, and hopefully they’ll start to emulate it on their own, the way they do when I’m exercising at the house.  

I’m probably not the best advocate for meditation here. I haven’t really tried making a case to people about it, or any far out claims about vast improvements in my mental state or well-being. I think the research speaks clearly enough, and anyways, I’m not trying to convince or impress anyone about it. Like fasting, it’s something I think that has been practiced for thousands of years, and is something that we’ve lost track of in our modern lives. Taking a step back for a few minutes a day, whether it’s 5 minutes, or more, is something that has helped quiet my mind, and help me focus more, to be present with my family, and to strengthen a sort of meta-cognition about the thought processes going on in my own head, as well as the stories that I tell myself, about myself and the world inside my head. 

And being aware of those stories and those voices, and being able to watch them fade away and just be present in the moment, that is what I’ve learned most so far. 

Working alone

Last weekend I finally got around to reading Two Scoops of Django, and it was very interesting. I wish I had picked it up earlier. I think I first started really delving into the Django framework about 3 months ago or so, and I’ve really enjoyed tinkering around with the models and ORM. I’ve done a bit with the forms and views, but I’ve spent a lot more time trying to draft out some data models for various projects and get a feel for how things work. I’ve fallen into my trap of getting too caught up in tools in order to actually deliver anything yet, but I’ve got two projects that I am primarily working on. I’ve been very disciplined about spending at least an hour or more each day on one of them.

Part of me thinks I should just focus on the one at the exclusion of the other, just to focus and plow through. “Starting is easy, finishing is hard,” as Jason Calacanis says. The other voice in my head is telling me that as long as I’m pushing forward on one of them or the other, it doesn’t matter, since the skills I’m learning on each will translate to the other. The last few days have seemed like my wheels are spinning though, as it seems I spent more time sharpening my ax than I did actually cutting down trees. I spent what feels like two whole days just trying to figure out how to setup cookiecutter-django the way I wanted it, another day or two trying to figure out why pipenv doesn’t work properly in Pycharm, and then another trying to figure out how to get Celery to work. Yesterday it was all about how to properly clone a 3rd party Django app so that I can make some modifications to it. And I’ve spent hours trying to figure out how to do my tests, what needs testing and what doesn’t. Endless hours on Medium reading everything I could find related to any of the above.

But as long as I can sit down and work on something, I tell myself I’m making progress and becoming an actual developer. I’ve talked about discipline previously, and that discipline is paying off with my day job as well, whether it’s Powershell scripts, or more Python API wrappers. The hardest thing about it for me is the solitary nature of what I’m doing. Not having a team or partner with these projects is the hardest, cause it ultimately means that I have no one to bounce ideas off of in real time. Best I can hope for is to dump something out on StackExchange and hope that someone gets back to me. Most of the time, just explaining the question sufficiently enough for someone else to understand it spurs the kind of subconscious creativity that leads to a solution.

There’s been many false starts already, but I’m starting to get there.

Currently, with a fintech app I’m working on, I’m trying to determine how I expand a cryptocurrency wallet app designed for Bitcoin and other assets that use it’s RPC interface. The asset that I’m working with is a fork of a privacy coin with the un-shielded send functionalities disabled. So I’ve got to figure out the simplest method to update all the calls in this library so that they’ll use the shielded commands for this asset while retaining the existing commands for the legacy assets. So far, I’ve decided to try adding a boolean field to the currency model and add an if clause to the Celery tasks to choose between the two based on the boolean. It requires modifying code in each of the various function. While it’s simple, it seems to violate one of the core principals of Django, which is don’t repeat yourself (DRY). It seems to me that there is another way that I can add a decorator or something to each of these functions — maybe a strategy pattern — to do that bit of logic in a way that would make it easier to implement. Maybe even without having to fork the 3rd party app in the first place.

We shall see.

API obsession



I have been obsessed with APIs lately. Obsessed. Part of this stems from the interest in coding, of course, but part of it has come from a new focus on automating a lot of manual processes out of existence. I think I first really started messing around with them via crypto — of course — through the need to maintain price tracking sheets for my spec mining projects. I wanted to be able to keep track of the amount of coins that we were mining, the current price of said assets, and use that to calculate earnings and so forth. When I started tracking, I would manually get the prices from the exchange, paste them into a Google Drive doc, then copy my totals from one tab into a running monthly sheet. It quickly became tiresome, and when I found an add-on that someone had created to do lookups via CoinMarketCap (CMC), I became very interested in figuring out how it was done.

Eventually, I got interested in projects that weren’t available via this CMC interface, and had to start rolling my own. I was able to write Google scripts that could call the APIs of various exchanges and mining pools, to give me exchange totals, prices, and mining payouts. I’ve added them to a hodge-podge collections of scripts that I maintain in a sheet, so I can keep track of the entire venture. I use them to plan trades and track positions afterward. Of course Google Sheets has its limitations, and most of my work is in Python, but the basic premise is the same. Wrap an API request in a function wrapper, do something interesting with the result.

A lot of the interest also comes from my interest in automation. I’ve read the stories about people who have automated their jobs using Python, for example, and one of the fun things about APIs is that not only can you get information out of them, but you can send requests to them and make them do things for you. To stick with fintech for a bit longer, trade execution platforms are a perfect example of this. Being able to send orders to a trading platform through an API has enabled the high-frequency trading and bots to take over the markets. But my main interest is a bit closer to home, or work, to be more precise.

At my day job, we use several different systems to maintain our operation. The crux of it is a professional services automation (PSA) ticketing system and a remote monitoring and management (RMM) system. The two vendors that we use are integrated petty well. There are several major players in the space, and most of them plug together pretty well. The main issue is that the PSA requires a lot of manual setup and steps to do basic things like setting up new clients, configuring contracts, maintaining inventory. All which require multiple steps through their rather clunky UI. It’s a pain. Even something as simple as closing a ticket requires 4-5 mouse clicks.

Using the PSA’s API, I’ve begun to draft a collection of function that will allow me to close a ticket using a simple close_ticket(ticketID) call. I’ve developed more complicated functions that will create contracts, add products to those contracts and link assets from the RMM to those contracts. Right now I’m focused on standardizing operations across our clients, but there’s further opportunity to standardize operations between all of our franchise partners.

But perhaps the most critical opportunity that I’m focusing on within my day job is eliminating failures caused by human error.

Downsizing

We’ve lived in our current home for 5 years now, a mid-sized two story built around twenty years ago. My wife and I upgraded from our 700 square-foot two-bedroom after our first child was born. The first house was great while we were dating, but was too small for our expanded family, and definitely too small for the second child for which we were planning. We were able to save up a sizable down payment over a year, set a budged and began looking at houses. We looked at a dozen or so, none of which really spoke to us, then my wife found our current home, which had been listed just outside of our budget.

The owners at the time had only been there for two years. The husband was Air Force, and had been redeployed, so they were short-selling. Three bedrooms, plus a finished room over the garage (FROG) which I immediately claimed as a man-cave. The downstairs: den, living room, dining room, kitchen; back deck, two-car garage, detached shed, back yard with tress. And the best part was that it was at the end of a cul-de-sac, far away from the first home, where there had been shootings, murders, house fires, animal attacks, and drugs. So we made an offer and got the house within our budget.

So now, half a decade later, and the rest of the costs have become apparent. The interest on the mortgage here is still more than what we paid at the first house. We just finished paying off a new HVAC system. The roof needs replacing. We’re just a 100-year-storm away from flooding. Cutting the grass; trimming the hedges. Power-spraying the siding. I was just told by an inspector that we have 60%+ humidity under the crawlspace. The insulation has fallen down and the whole thing will probably need encapsulation. Then there was the time that the upstairs shower drain leaked, causing damage to the beautiful scalloped ceiling in the dining room. We tried to save money and have someone matching the original work after the plumbers destroyed the ceiling, and I’ve never been happy with the result. The entry door in the garage is rotted from moisture. Et cetera, et cetera.

And then there’s the damage from the two little gremlins that are my children. The younger one, who’s known this house her entire life has been the worst. Markers on the walls, the doors. The CONSTANT cleaning, the clutter. I don’t know when the decision was made, but between work life, home life, and the side hustles, at some point in the past six months my wife and I decided enough is enough. We often tell each other the refrain “burn it all to the ground” during moments of frustration, just wanting to wash our hands of the whole situation. There are things that we’d rather be doing, places we’d rather be, than dealing with these benefits of home ownership. We hired a housekeeper to come by every two weeks to help out, but there’s still so much else to be done. And we’re done.

I think a lot of these feelings — both on mine and my wife’s part — stem from general dissatisfaction with our jobs. As a tech worker I’m at home mostly and am getting to the point where I could pretty much work from anywhere. My wife is determined to retire at her civil service position, but as a Federal employee can go anywhere. One of the arguments for staying put is that we have a few family members nearby, so we don’t want to lose that, so we’re still undecided as to where to go, but we’re sure that we want to go.

So while I’m waiting for the bank to process my home-equity loan so we can go back another $25k in debt to finance the roof and other repairs, we’ve decided to taking the first steps toward freedom: getting rid of our stuff. Step one, and the most important part of this plan: stop buying more stuff. It’s been hard, but we’ve been able to clamp down on this part so far. Our Prime membership has been unused for months and is bound for non-renewal. We’ve stayed away from yard sales completely this summer, and the only trips to the thrift store has been to drop stuff off. My one exception: books and magazines. I have subscriptions to several periodicals, and I am obsessed with the twenty-five cent shelf at the local library which usually has some gems.

Step two: get rid of your stuff. This is the hardest one for me, I’ve got closets with computer gear, flight sticks, racing sim equipment, motherboard boxes, cables, music equipment, et cetera, et cetera. I’ve got at least 5 computers for various roles, two laptops, seven monitors. Guitars, PA and other gear. I’ve got over a dozen board, card and RPG games that I haven’t touched in over a year. I do not have the emotional capacity to even think about sorting through any of this stuff. So right now I’m doing what’s easy: getting rid of the kids’ stuff.

No longer a night owl

I’ve considered myself a night owl for years, and one who has felt comfortable on 6-7 hours of sleep a night. I suppose at first it was just an excuse to stay up late drinking and playing video games in my 20’s, but even after I stopped playing games as much I still preferred the time in the late evening to stay up and get things done after the rest of the family had gone to bed. These days though, I’m beginning to find myself becoming an early riser. Part of it I attribute to my young children, the rest to a few lifestyle changes I’ve been making. 

I’ve always had a bit of an arrangement with my wife, who requires much more sleep than I do. She has always gone to bed at a decent hour, I have 2-3 hours in the evening to do whatever I want to do, and then we’re both back up in the morning to start the day. It’s worked wonderfully for most of the 15 years we’ve been together. With kids, though, it’s proved to be a bit more difficult. 

I always seem to revert to longer spells of sleep when I go on vacation. I guess part of it is attributable to being away from screens, or maybe just the sheer physical exhaustion of going out and doing stuff out of my rut. Being in a hotel room with the family makes it difficult though. Getting the kids down is always a process, one that sometimes takes hours longer than I think it should, and recently I’ve just started capitulating and have been going to bed at the same time they are. It’s easier to lay down and pass out while they’re still winding down than to become frustrated waiting for them to fall asleep so that I can get on with things. And it’s proved much easier to get up earlier in the morning, refreshed, and do some work while I have two solid hours before anyone else wakes up. It proves a bit of a reinforcing habit as well. I’m more likely to go to bed early after having risen early in the morning. 

Hotel Alexa

I’m staying in a hotel tonight. It’s not something that I usually do but there’s been a couple of family events that have brought me and the crew out of town. I woke up this morning before dawn and found myself staring at this bright green light a few inches away from my face. It’s probably just the thermostat or something, but it got me thinking: how long before Hilton and the other big hotel chains start putting voice assistants in rooms? 

I probably wouldn’t be thinking this if the front desk had picked up the phone any of the dozen times I tried to call them last night, but it seems inevitable that there’s some company out there working on a bot for one of these chains: “Alexa, I need more towels.” “Alexa, how do I connect to wifi?” “Alexa, what channel is Disney channel?” “Alexa, have room service bring me dinner.”

Listening

Seems inevitable. I’m sure it will be a while before people are willing to accept these things in their rooms. Some, like myself, aren’t comfortable having these things in my house, let alone rooms where they are sleeping or doing other more intimate activities. I assume that the hotels could hand them out at the front desk as an option: “Would you like a virtual assistant with your room, sir?” And then I’m sure it’d be a matter of time before they’d become standard deployments the way wifi repeater seem to be everywhere. 

Update: It seems I’m a bit late to the party. Amazon released their Alexa for Hospitality in June of 2018:

Guests will be able to do things like order room service, request a housekeeping visit, or adjust room controls (thermostat, blinds, lights, etc.) using an Echo in their room. They can also ask location-specific questions such as what time the hotel pool closes or where the fitness center is.

Some upscale Vegas hotel apparently pioneered Alexas in their rooms back in December 2016, and in October of last year, Marriot announced plans to run a trial in Charlotte hotels. One thing that we didn’t anticipate when we were writing this was the response of hotel staff, who saw these devices as a threat to job security as far back as September. It was apparently part of a list of concerns when  Marriott employees went on strike last fall. 

https://imgs.xkcd.com/comics/listening.png

Free JetBrains software for academic developers

So I’m pretty happy cause today I found out that JetBrains is offering free licenses to their entire software library for students and faculty members. I’ve been using PyCharm Community edition for some time now, and am really glad to have access to the Professional version with all the plugin and Django support. I actually purchased a CLion license a year ago or so. They make really good software, and I encourage everyone to check it out. 

Martin Rees: On the Future

Lord Martin Rees

I just finished On The Future, by Martin Rees, U.K. Astronomer Royale. This short 200-pager is Rees’s take on the technological perils and promises that humanity faces, both in the near and far-future. The book touches on many scientific topics, including artificial intelligence, space exploration, post-humanism and biotech. He explores existential threats like climate change, nuclear proliferation and biological warfare, then pivots to more philosophical questions about the role of science and religion, science and academia, government funded explorations vs. private sector missions. 

This book is aimed at the more casual reader and is more of a light read than other science books I’ve read in the past. It covers a lot of ground without delving too deep into the actual science, which makes for a light read through most of the chapters.  I think I may have skimmed through the first two thirds of the book, as I was familiar with most of what was being covered. It wasn’t until the latter portion of the book that Rees got into more of a personal discussion about the way science is funded and how the members of the scientific community operates. 

It’s clear that Rees is thinking legacy here. He’s in his late 70’s, and it’s clear that he felt compelled to write this book as a drop of knowledge to younger generations. It’s clear that this book isn’t written for his colleagues and peers, but toward the younger generation of aspiring scientists. This book may make a good addition to a high school summer reading list, but those with a more of a background in science may find Rees’s Prospects for Humanity a bit elementary. 

Windows VM on Ubuntu

I’ve been slowly converting to Ubuntu over the years. Neal Stephenson’s In The Beginning Was the Command Line made Linux seem like such a rage when I read it years ago, but I had always been slave to the GUI. Things started to change a bit when Microsoft started pushing Powershell. My manager at the time said that it would “separate the men from the boys” and I’ve been making a push to start building out a library of PS scripts to use to during Windows Server deployments and migrations. 

I’ve been exposed to *nix plenty over the years. My first job after high school was at an ISP, and I remember watching in awe as the sysops guy would bash his way through things to disconnect hung modems or do this or that. I forget exactly when I started getting into actually using it, but I remember setting up LAMP stacks back in the day to setup PHP apps like WordPress or Wikimedia when I was working at the Fortune 500 firm. Cryptoassets led me further down that world, compiling wallets from source, deploying mining pools on AWS instances. Computer science courses opened me up to the world of sed and regex. I still haven’t gotten into emacs or vim — I’m not a sadist. 

As someone who’s been supporting Windows operating systems pretty much for the past 20 years, one of the realities that one often lives with is the reality of having to reinstall the operating system. I did so many during the time that I operated my service center that it was as natural as turning it off and back on again. Luckily I’ve managed to keep a few boxes up and running for several years now –knock on wood– but my primary work laptop hasn’t been so lucky. It’s five+ years old now and has probably been redone 3 times. The last time I went ahead and took the plunge and installed Ubuntu. I still run Windows in a VM since my job relies so much on it, but I’m becoming more and more comfortable in it that it’s becoming my preferred OS. 

One issue that I’ve been struggling with on this setup is that from time to time my system will halt. I might be in the VM, working on something, or browsing Chrome on the host and it will just lock. Sometimes it seems to be when I open a resource-heavy tab. I don’t know if it’s a resource issue between host and guest, but it’s been annoying while not bad enough that I can’t just reboot and keep going.

Today has been a different story. 

Earlier I noticed that the system was starting to become unstable. Fans were whirring, Chrome was starting to hang up intermittently, so I went ahead and restarted the guest OS. Only this time it wouldn’t come back up. Stuck in a automated system repair. I downloaded a boot disk and tried to mount the system. Wouldn’t even get that far. Finally I said ‘screw it’, unmounted the disk and started creating a new one. That’s when I started getting into raw vs. vpc vs. qcow2, ide vs. virtio, pouring over CPU and RAM allocations. I spent hours trying to get the disk to come back up. I think it had something to do with the format I used when I originally set up the disk. It might have been a swap issue or something, but since I’m running it off of virtio now it seems more stable. Time will tell. 

As for the original vhd, I eventually copied the data file off of the local file system on to an external, and was able to fire it up attached to another Win10 no problem. I deleted the original on my laptop and copied the copy back and was able to get it to spin back up. I think it  may be something to do with the fixed allocation of the vpc file vs. the dynamic sizing of the qcow format. 

Today has been a reminder to check backups on all of my systems. Thankfully Crashplan has Linux support now, so I’m going to get that deployed ASAP.