3 Must-Use Commands With Tupperbox in Discord

For the last few months, I’ve been using Discord, Slack, Hangouts, Signal, Skype, and Teams for chatting with friends, family, colleagues, and clients. Discord is very like Slack, with a few differences because it’s geared toward gamers while Slack focuses on businesses.

Both Slack and Discord support add-ons in the form of ‘bots (robots, or programs that watch for certain events and respond to them). Tupperbox is a robot that has popped up on a couple of servers on which I role-play. It’s used to let you assign actions to issue different responses, based on the inputs. In my most frequent use case, I give it a trigger phrase and it takes whatever follows and makes the text appear to have come from someone else. I can use the robot to make a sentence I type look like it came from one of my characters instead of myself. Instead of “Peter Nikolaidis says that Hector Roundtree says ‘Forsooth!'” you would see “Hector Rountree: ‘Forsooth!'”

The trick is that I need to register every character and its associated trigger phrase, and this confuses me every time, despite the built in help. So I figured I’d document the exact characters I typed right here for next time (and for you, of course, dear reader)!

How register a new character/avatar/name:

tul!register "Hector Roundtree" hrtext

Any time I start a message with the letters “hr” and repackage anything after that to appear to have come from “Hector Roundtree” himself.

I also like to have a different icon for each of my characters. The first step is to upload a small (thumbnail) image, preferably a square with the face in the center, to a publicly reachable URL. I’ve had zero luck linking to OneDrive or iCloud photos, so I upload them to my WordPress site and reference them from there.

tul!avatar "Hector Roundtree" https://example.com/uploads/images/hector-roundtree.png

The above text will register the image with posts made by Sir Hector, instead of a big question mark icon.

What if you goof and want to start over? You can always remove and re-register. For example, I registered “JJ:” for one of my characters, and “hr” for another. The problem? For one, the colon is extraneous. I could use “JJ” instead. Also case matters, so “JJ” is not the same as “jj” or “Jj.” I often type posts from my phone, which likes to autocorrect things. For instance, if I start a new post by typing a letter ‘h’ and an ‘r’ by default this will be “Hr.” Great, except I registered “hr” so every time I want to post as Hector, I have to uncapitalize the ‘H’ first. What a pain! That’s where the remove command comes in.

tul!remove "Hector Roundtree"

The above text will remove Hector, letting me re-add him with a simpler trigger phrase. This time I’ll use “Hr” to make for easier posting from my phone.

tul!register "Hector Roundtree" Hrtext

My Journey Into Analyzing Apple Health Data

I’ve owned an Apple Watch for years – since the Series 2. I’ve also been running consistently for years – three of them, to be precise. I also like data. I’ve been collecting data on my workouts via my phone and watch for years, but getting data off of the iPhone’s small screen has always been problematic.

“But Peter!” you say “Apple lets you export data from the Health app!” Yes, it does. Have you ever looked at it? It looks something like this. Correction – it looks EXACTLY like this.

Well-structured XML

It’s XML data, and that doesn’t easily lend itself to a graph. Also, my data is over 1.3GB at present. That’s a lot of data for one guy. So I looked around for how to analyze my iOS Health data. The first site I found that looked promising was Analyze the Crap Out of Your Apple Health/HealthKit Data (sep.com) and GitHub – jonfuller/health-parse: Parses an Apple Health data export… for reasons. The developer offers an email address – email your health data to applehealthdata@gmail.com and it will send back parsed stuff. Sure. I’ll email you my 1.3GB of Apple Health Data. Let me know when you get it. Okay, no, I did not try that because it’s never going to work. So I downloaded his code from Github, but I couldn’t get it to compile. Seems like I’m not the only one, as others reported the same issue.

Next I tried the Heartwatch app for iOS. So close! It generates some nice reports but only goes back one year. I want to track data over multiple years. I emailed the developer, and he said he’d consider it.

Then I tried the YouTube video (1) How to download, graph and assess physical activity and exercise data from Apple Watch – YouTube. OMG hilarious. Fail. 

Something in Python perhaps?  Analyze Your iOS Health Data With Python | by Guido Casiraghi | Better Programming | Medium Prerequisites: You know the basics of Pandas. I don’t even know what pandas is, other than a big bear-like thing that lives in China. 

I tried to import the XML files into Excel. Hahahaha. I’m running the 32-bit version. It cannot open a 1.3GB XML file. 

I poked around and found this article by Taras Kaduk: Analyze and visualize your iPhone’s Health app data in R. I was told R is easy to learn and use, so I figured I’d give it a try.

I installed R for Windows. The UI seems a bit dated and barebones. The Comprehensive R Archive Network (case.edu) How do I install libraries, anyway?  HodentekHelp: How do you install the XML library for R programming? Okay, manual process, must select stuff from a list by point and click. Yuck. 

How do I change directories in R?  how to set path in R on Windows – Google Search

Hm. This looks kinda neat and more polished.   Download the RStudio IDE – RStudioHave to install those libraries, but at least I can type their names in a comma-separated list. Much quicker. 

How do I change directories in R again?  getwd, setwd | R Function of the Day

What’s the path to my files in my OneDrive folder without spaces in it?  Use PowerShell to display Short File and Folder Names | Scripting Blog (microsoft.com)

How do you comment in R? Comments in R – GeeksforGeeks

How do you print more lines than it’s showing me?  how to increase the limit for max.print in R – Stack Overflow

What does that %>% do?  Simplify Your Code with %>% · UC Business Analytics R Programming Guide (uc-r.github.io)

Oof. Guess I should take a lesson. Learn R | Codecademy

Yup, that did it! The following R code imports my Health XML data and spits out a CSV. And yeah, it took a lot of floundering to get these few lines of code:

xml <- xmlParse('export.xml')
df_workout <-  XML:::xmlAttrsToDataFrame(xml["//Workout"])

Now I have a CSV file! Great! I’ll make a chart in Excel. OMFG Excel charting is beyond convoluted. Why is it so F***ING COMPLICATED?!?! 

Google Sheets to the rescue. Finally. I have what I have sought for months.

I realized that with the right libraries, I likely could have accomplished the same thing with Perl or Python, but learning R has been fun and I may have applications for this professionally as well as personally. Also, I should be able to generate the graphs directly from R, but haven’t learned that yet. Finally, I will likely need to dive deeper into the data to incorporate steps per minute and heartrate into the above chart. I’m really interested in overlaying my steps per minute and average heartrate to see how this affects energy used and pace. So while I’ve taken the first step (no pun intended), I’m not done yet!

How to Hold Your Foot in a Strap With Minimal Effort

I like to use a strap in leg extensions, especially in long-held Yin poses. The problem? Holding the strap gets tiring! Looping it around the fingers can hurt after a while, and even if you hold it around the meaty part of the hand, it still takes some muscle power.
The solution? Loop the strap around both wrists so that it holds itself in place. Start by making a loop.

Take the bottom of the loop and lift it toward its center so as to make two smaller loops toward the bottom.

Slide your hands through the small loops.

Grasping the strap, loop it over your foot, so that your hands rest lightly on the strap and are held in place by it.

Recline, extend, and relax!
Here’s a video where I walk through the process.


Inspired by a newsletter email from the folks at RescueTime, I’ve decided to give single-tasking another shot. Hopefully my meditation training will help. In recent months, I’ve noticed an increasing tendency to get distracted while – wait for it – multitasking. Despite having known this was a bad practice for years, I still find myself doing it. Well, I’m going to work on fixing this – again. The last time I did so was quite some time ago. Here are some tricks I’ll be trying.

  1. Less playing of podcasts in the background for “background noise.”
  2. Fewer windows open at once. So much for those investments in all those big flat panel displays.
  3. Taking one on one calls with my reports on my phone as opposed to on a computer, and insisting they do the same.
  4. Closing all those extra tabs and getting back to checking email on a schedule (except of course if I’m on call and need to be responsive in a more timely fashion).

Got any other tips or tricks? Let me know!

180 Steps Per Minute

On my last two 10k runs, I experimented with upping my cadence (steps per minute). My normal cadence has been in the 155-165 steps per minute, and my normal pace has usually been in the high 9 to low 10 minutes per mile. This is mainly because I haven’t really cared to address my speed, so I would just ramble on at whatever pace I felt like running at, unless I was in a hurry or with someone else.

While I had heard that my pace “should be 180 steps per minute,” it was never clear to me as to why this was important. Additionally, given my training in yoga and anatomy, in which a recurring theme was “ever body is different,” how could it be that these two guys should be expected to have the same cadence?

Game of Thrones: Tyrion Lannister (Season 7) | 1:6 Scale Peter Dinklage |  Three Zero 903959
Gregor Clegane - Wikipedia
The Mountain

No, really. How can that make any sense? It should not be a surprise that there is some room for variation here, as with all things anatomy, and 180 is likely just an average. That said, I figured “what the heck? Why not give it a try.” After a little digging I found a website that suggested working your way up to 180 by starting with a playlist that runs around 10 bpm faster than your current average cadence. So I found a playlist on Apple Music that ran at 165 bpm, and I hit the road.

I immediately felt like I was moving faster – and I was. At first it was definitely more work, but after a while, I got into a rhythm. On a funny note, I found out after I finished my run that I had averaged 182 steps per minute! I knew that I was not keeping time with the beat of the music, but I didn’t realize it was because I was going too fast. Given that, I picked another playlist, this time running at 180 bpm. On my second attempt at keeping this cadence, I actually was a bit slower, coming down to the mid 170s on average. That said, it was still one of my fastest – if not the fastest – 10k I’ve done, coming in with an average of 8’59”.

In short, I’m sold. I’m going to try to keep up with the 180 steps per minute cadence. Supposedly this is universal, and applies to all forms of terrain. Time will tell as I experiment. Watch this space for an update!

Running Update – Half Marathon

Wow. Over a year between blog posts. I’m on a roll! I forgot to brag that, in March, I ran 13.1 miles. That’s the equivalent of running from Athens to Kifisia, Greece. For those of you who are cartographically-challenged, Kifisia is halfway between Athens and Maration, which is 26.2 miles away. Is it starting to make sense now?

In February, I started adding one mile to my runs. Every week, I would run two or three times, adding a mile each week. When I started this, I had been doing my semi-regular 5 miles per run. The first week, starting on February 2, I ran 7 miles three times. The next week I ran 8 miles twice. The next week was 9, twice, followed by a 10 miler (my first since 2019), then 11 miles, then 12, and then finally, on March 4 I hit 13.21 miles. My average pace was 10’23”, which is on my higher end of pavement running these days, so I am still pretty happy with the numbers.

Since then, I’ve done a couple of 8 mile runs, but pretty have much standardized on 6.25 (10k) every other day. The heat definitely affects me, and when it’s in the high 80s or more, I generally skip it or go trail riding. Trail riding has also cut into my running routine somewhat, but it’s also fun, good exercise, and gets me outside, so no foul!

2018 – It's Been Eventful!

What have I been up to since my last blog post? A lot, actually. I’m going to break them up into different posts.

So, yeah, lotsa stuff.

Slow Carb Modified

In late June, I made some measured modifications to my now-(depending on how you define it) famous slow carb diet practice. 
For starters, I resumed drinking Gatorade during Krav Maga training sessions. I noticed an immediate increase in my mental acuity and energy levels, resulting in better training, both physically and mentally.  I am also allowing myself up to one soda – usually club soda, lemon juice, and stevia – per day. 
Next, I allowed myself one “slip day” (in addition to my cheat day) per week, where I can eat restricted foods (dairy, or grains) provided I do so after a resistance training workout, and I stay within my daily total energy expenditure (so if I have a couple slices of pizza after hitting the gym, and keep the calories sane, I’m okay. 
I’m also skipping breakfast – yes, the most important meal of the day – on most days. Also, I haven’t been eating as many legumes as previously, usually only having them a few days or of the week now. 
Finally, I allow myself some night time carbs. This has usually been a small amount of dark chocolate, but could also be a granola bar. In addition to satisfying any cravings, this had resulted in better quality sleep than melatonin, valerian, or GABA. Again, I make sure to stay within my daily TEE so this is not a bingefest like some Saturdays turn into. 
The results? Not much to report, actually. There has been a modest decrease in weight over the last few weeks, but nothing dramatic. 
Given all of these adjustments, I’m not sure it even qualifies as the slow carb diet even more, but hey! As long as it works, I’m happy. 

Weight tracking June-July 2016
Weight tracking June-July 2016

Kanex Mini Bluetooth Keyboard with Stand Cover – Review

Mini Bluetooth Keyboard
Price: $39.99
Company: Kanex
Kanex Mini USB Keyboard and StandI recently had the opportunity to review the Kanex Mini Bluetooth Keyboard with Stand Cover, and I have to say that I was impressed. Inside the box are the keyboard itself, a magnetic cover (which doubles as a stand for your tablet or phone), and a USB charging cable.
PairingPairing I the keyboard with my iPad Mini 4 was a breeze, as the keyboard appeared immediately in the iPad’s Bluetooth settings. I also paired the keyboard with my iPhone 5S to test, which worked a expected. However, I did have to make a few attempts to re-pair the keyboard with my iPad when I was done experimenting with the iPhone, as pairing with the iPad failed several times until I powered for the keyboard, told the iPad to forget it, and added it back as a new device.
The keyboard itself performed very well, despite the fact that the keys are the size of Chicklets. Recall that it is the same width as an iPad Mini, so there isn’t a lot of real estate to play with. I did find myself occasionally hitting Enter when I was trying for other keys, and found the need to press the Fn key to get apostrophe and double quotes a bit odd at first, but I figured it out. Am I as fast a touch-typist on this as I am on a full-sized keyboard? Not even close. Am I a whole lot lot faster than using the iPad’s on-screen keyboard (either the Apple default or Google Gboard)? You betcha. However, if you have even slightly larger than average fingers, you could find yourself making a lot of typos and at the whim of autocorrect to save you.
Speaking of autocorrect, I found I was able to express myself fairly quickly and accurately with the Kanex. I was also amazed at how much faster it was for me to be able to Command-Tab from one app to another rather than double-clicking the home button to open the iPad’s built in task switcher view. One thing that always takes me a little getting used to is the fact that there is no mouse or trackpad. For some reason, there is still a disconnect for me between typing on a physical keyboard, and having to touch the screen to select icons or menus. That said, the Kanex supports common keyboard shortcuts, like Shift-arrows for selecting text, and Command-X and V for cutting and pasting a selection. The Fn key also provides the ability to invoke several extended commands, such as switching back to the home screen, cycling through apps with Command-Tab, and audio/video playback controls. Including Fn key combinations, I was able to find all of the keys normally found on a standard 101-key QWERTY keyboard.
Although it is fairly intuitive, the provided documentation (in English, Spanish, French, German, Chinese, and Japanese) does not show how to fold the case so as to function as a stand, although the there is a picture of it in stand mode on the box (which I did not notice, because I set the box aside as soon as I opened it). The cover itself magnetically sticks to the keyboard – which is brilliant – as well as itself, to stand up in a sort of tent on which to lean your tablet. You can easily separate the two pieces if you like, but they firmly adhere to each other for a stable typing experience, even when I have the unit on my lap.Kanex Mini Keyboard docs
Also not documented are the Fn key options to invoke iOS, Android, or Win modes. I noticed that selecting iOS allowed me to use the special commands to return to the Home screen, Find, or even lock the iPad. As I didn’t have an Android or Windows device handy to test this, I presume selecting these key combinations issues the appropriate command dependent on what operating system you select.Kanex Mini Keyboard and iPad Mini 4
Kanex claims that the rechargeable battery will last for two months on a single charge. While I did not have any issues with the battery, I did not have time to put this two-month claim to the test.
Overall, the Kanex Mini Bluetooth Keyboard – on which this entire review was written – is a solid offering, and worth a look if you are in the market (or if you’ve just been typing on an iPad Mini and haven’t yet realized that you’re in the market).