BRYGS

Author: Brygs

  • Rouvy or Zwift?

    Rouvy or Zwift?

    Recently I decided it was time to give another indoor riding environment a try. After 1,000 rides on Peloton and grinding through more than 40 levels of Zwift, I was beginning to feel like I had exhausted those platforms, and with so many options I wanted to try something new. Enter Rouvy (like Zwift, another product whose name is always auto-corrected into something else).

    I’m a pretty enthusiastic Zwifter, having logged about 400 hours on the platform. I still enjoy it very much, but as is true for most games, eventually I had completed all the challenges and acquired all the stuff that the game has to offer, and most days are just more of the same (which is why I’m so excited when new routes are revealed!)

    A month or so ago, I met a Rouvy fan, who could not speak highly enough about it and urged me to try it. So this week, rather than another mind-numbing set of loops around Fuego Flats, I downloaded the Rouvy app and decided to give it a try.

    What Rouvy has to offer 

    The thing that impressed me the most about Rouvy is how, in a lot of ways, it is the most realistic cycling simulator I’ve tried. No, there’s no braking and no turning (even through clicking a button on an app), so on that level it’s the same as Zwift, but the overall experience is much more like riding in the real world, and I’m not talking about the graphics. What I’m talking about is that things like distance, incline and decline feel more real in Rouvy.

    Rouvy reveals that Zwift is the miniature golf of cycling

    Riding a course in Rouvy really brings in to focus a feeling I’ve had about Zwift for a long time. Although I don’t have any data to suggest that a mile in the game is more or less the same as a mile in real life, it does seem odd that one can ride up a mountain, through foothills, a desert, and a beach all in a ride that takes less than an hour. To give an example, it takes about ten minutes to ride to the top of the volcano from sea level. According to some maps, the height of the volcano is about 125m above sea level (about 410 feet) and the course that ascends it is only 3.75 kilometers (2.3 miles) despite circling the volcano several times. This volcano is tiny.

    Zwift is sort of the NFL Red Zone of cycling. It’s all highlights. It’s one thing after another. And absolutely there’s a place for that soft of thing. The constant variation is what makes it fun and because the graphics are very basic, Zwift can get pretty boring pretty fast if you’re not about to transition from the plains to the hills, or to the mountains, or whatever is just up ahead.

    But real cycling is generally not so dramatic. It’s long stretches with relatively modest changes in incline. Depending, of course, on what route you select, there’s generally a decent wait between truly challenging sections, but because you are watching real video the rides manage to stay interesting even as you grind out some of the less dramatic miles.

    Another key difference in the feel of Rouvy vs. Zwift is very noticeable for users of the Kickr Climb or Wahoo Bikes, and that is how they handle inclines and declines.

    On Zwift, inclines and declines are presented only in whole percentages, and as a result, you are pretty much always aware of a pitch change while riding. Rouvy, however, presents incline as tenths of a percent, so it is very possible for a grade to change gradually over time without you ever really being aware of it. In fact, during my introductory ride (which has only gentle inclines and declines) I wasn’t sure that the bike’s incline feature was working at all. Now that I have a few Rouvy rides under my belt, the Zwift changes seem jarring and unnatural by comparison. (Well, they always felt unnatural, but I had nothing to compare to.)

    Rouvy’s ride library

    Rouvy has a fairly large set of curated rides available, from all around the world, and they are pretty fun to ride. I’ve noticed, though, that certain routes work better than others.

    The least-good ride (I hesitate to call it the worst, because it wasn’t bad) I experienced was a ride through downtown Sydney, Australia. As you can imagine, there are some stoplights in downtown. Rouvy doesn’t actually make you stop at the stoplights, but the transitions that the video needs to make to account for this are a little jarring. Still better than having to actually stop, to be sure, but in a congested downtown, where you hit a lot of stoplights, it starts becoming something of a regular occurrence.

    More in general, the videos work best when the camera car (and for the rides I’ve taken it does always seem to be a car) can travel at a constant speed. As you can imagine, the video playback speed increases or decreases based on your speed, but the algorithm really has its hands full when trying to sync to your bike and deal with managing the variable speeds of the videographer.

    An aside here… it’s really mind bending to be riding Rouvy after so much Zwift. I can remember being in a ride and noticing how the roadside trees moved by faster than the distant mountains and thinking, “wow, they really nailed the motion parallax” before realizing that yeah, it’s just a video of trees and mountains so it should look realistic! Another crazy thing is riding and seeing another cyclist ahead, except that this cyclist was actually in the video and not part of the augmented reality overlay. As I do outdoors, I accelerated in order to tuck in behind this cyclist (there is drafting in Rouvy as there is in Zwift and IRL) before realizing that if I speed up, the cyclist ahead will, too. The question of whether I’d ever catch him is whether the person who shot the video caught him. If the videographer never overtook the cyclist, I would never do it, either, regardless of how hard I tried.

    The most successful Rouvy videos are long, open roads where the camera car can maintain a constant speed and there are no cyclists in the video itself. Those are the conditions that show off Rouvy best.

    Create your own rides with Rouvy and explore its limitations

    The thing that really attracted me to Rouvy, though, was the potential for uploading my own rides. One thing that I learned from doing centuries and longer rides is that it is very useful to know what to expect. I think it would be terrific if I could upload the route of an upcoming event and pre-run it. To me, that would be Rouvy’s killer feature.

    Unfortunately, it’s not really ready for prime time. I have high hopes that this will evolve over time, but there is, as my father would say every time I brought home my report card, “room for improvement”.

    I tried two different user-created routes, one with video (which I did not create myself) and one without (which I did create myself). The route with video was fun to ride, as it went through a national park near where I live. I recognized the route and it was fun to ride on familiar roads.

    It wasn’t perfect, though. For one thing, the elevation changes often didn’t truly sync with the video. Sometimes I would see myself ride up a short, steep grade but my bike didn’t elevate or get any harder to pedal. Then, five seconds after getting to the top, then the bike catches up. It’s a bit disorienting to experience. I don’t know if this is just a limitation of the available data (I’m not really clear on how the service actually syncs the video with the GPS data) or whether better data would have resulted in a better outcome.

    The second user-generated route was one that I created myself. I don’t have a video camera, so this was a data-only route. In my research, I was aware that you could create your own route without video, but I couldn’t find anything on the web about what that experience is like. If you go this route (no pun intended), what you get is a Google Earth-like map with a line showing the route and a dot representing your progress. This actually worked pretty well for me because it was a route I knew very well. I knew the hills were coming and I think to my muscles it was probably a pretty good approximation of an actual ride. I’m not really sure how much I would enjoy a video-less ride over a route I was not familiar with. If it’s for pre-running a route that I am going to do in IRL, I suppose it’ll do the trick. Would be nice to have something like RGT’s Magic Roads, though. I’ll do a post about that soon.

    Rouvy or Zwift?

    Zwift. If I had to choose one, Zwift is clearly superior. I definitely enjoy doing longer rides on Rouvy and enjoying the scenery (though I was disappointed that the “Grand Canyon” ride I did this morning offered only one or two glimpses of the actual canyon). I like that elevation is graduated in tenths of a degree instead of entire degrees as they are in Zwift. In the end, though, I can’t see myself spending $15/month for the few things that Rouvy does better than Zwift. I certainly wish them the best, and will probably check back in a year or so from now and see how they’ve progressed.

  • Not a valid JSON response

    Not a valid JSON response

    For developers, what do you do when it’s your plugin that’s getting the dreaded “Update failed. The response is not a valid JSON response.” message?

    not a valid JSON response error message

    While I was developing my WordPress plugin, I occasionally found that I was encountering the enigmatic “not a valid JSON response” message when I was trying to update my test pages. As you might expect, I headed to Google to find out what this message is and what to do about it. Although I did find a number of web pages that talked about this particular question, but they are invariably aimed at the WordPress administrator who is trying to get their site working. The advice is generally to turn plugins on and off until the problem goes away, and then blame the last plugin they tried. That’s all well and good, I guess, but that’s not very helpful if you’re a developer and it’s your plugin that’s the problem. 

    What is the nature of the “not a valid JSON response” error?

    This may not be a comprehensive answer, because I can’t say I’ve seen it all, but I can talk about my experience. My plugin uses a shortcode, and I was getting this error any time I tried to edit a page that contained the shortcode.

    The problem I was having was that my shortcode was being fired by the editor when I went to save my changes. The shortcode returned some content, and when WordPress attempted to subsequently write some header information, the operation would fail because you can’t send headers after your body content is sent. Now, in my case, the changes weresaved, but the message was disconcerting nevertheless, and WordPress helpfully offered to roll back the changes. Considering that I can’t really reach out to my plugin users, I can’t just say “ignore that” even if I could.

    Fixing the “not a valid JSON response” error

    The key to avoiding this error is to make sure that your plugin isn’t outputting data at the wrong time. Unfortunately, WordPress tends to try to show the shortcode contents every time the shortcode appears, regardless of whether it’s appropriate or not.

    The approach I decided to take was to suppress the shortcode output when the page was being edited. This turned out to be a lot more difficult than it seemed it was going to be.

    Step 1 was to add the following line to the very beginning of the main routine of the plugin:

    if ( is_admin() ) { return ""; }

    This is sort of a standard fix, although it probably does need some clarification because it is an often misunderstood function. is_admin() is true when you are on an admin page, not if you are an admin. There are tests you can make to determine the user’s permissions, but is_admin() is not it!

    Now, at first I thought that my problem was solved, but soon learned that editing a page is not covered under is_admin(). Maybe it should be, but that function will return false when editing pages. So, I needed something else.

    I tried a few other functions to try to determine if a page was being edited, but it seems that modern block editors such as Gutenberg and Divi really blur the lines between the editor and the viewer, and I couldn’t find a test that I really liked.

    So, as they say, I decided to nuke the site from orbit. It’s the only way to be sure. My final line of code reads:

    if ( is_admin() || is_user_logged_in() ) { return ""; }

    This code uses the is_user_logged_in() function, which is a bit more self-descriptive than the other function. Come to think of it, I suppose the is_admin() call is redundant now, but whatever…

    With this code in place, the shortcode is not activated for a logged-in user. Ever. The problem I set out to solve is solved, but there is one unintended consequence is that I can’t see my shortcode in action if I’m logged in at all, even in, say, preview mode. As it happens, this is acceptable to me because I usually edit in one browser and view in another, but it is something less than perfect for my users who might wonder why they can’t preview their stuff. If I find a better solution, I’ll post it here, and if anyone has the answer please leave it in the comments. Thanks!

  • On Writing a WordPress Plugin

    On Writing a WordPress Plugin

    In December of ’21, I wrote my first WordPress plugin for something other than my own use. That plugin was “PetPress”, a plugin connector for PetPoint and WordPress. In January I submitted it to WordPress.org for inclusion in their catalog, and after a little back-and-forth (described below), it became the first and only plugin of its kind in the catalog, which I have to confess I’m pretty proud of.

    Why I wrote a WordPress plugin

    The PetPress plugin, which connects PetPoint to WordPress.

    I had essentially three goals when I decided to create a WordPress plugin. The first goal was to extend the functionality of some code I had already written. I wrote a PetPoint / WordPress connector for an animal shelter that I volunteer for, and used a file-based mechanism to cache the pages that were generated. This was necessary because the interface isn’t particularly fast, and multiple calls are needed in many cases. By making a WordPress plugin, I knew I could leverage the MySQL/MariaDB database that the WordPress site uses to move caching to the database rather than having to use the file system. Plus, I wanted to be able to use WordPress tools (specifically, Divi) to format all of the parts of the site that aren’t generated by the interface. (My original site was all hand-written, which is very laborious when dealing with both variable content and the needs of responsive design).

    My second motive for turning my PetPoint/Wordpress interface into a plugin was, believe it or not, to help out other people. PetPress is the #1 kennel management software in the USA (or, at least it was according to stats from 2014) and WordPress is the #1 content management system on the web (accounting for something like 40% of Internet sites). Being able to connect the two should make it dramatically easier for many, many animal shelters to provide pet listings directly on their websites (without having to use the more rudimentary tools offered by PetPoint). These are organizations that never have much money, and it was pretty cool to think that I could help potentially hundreds of shelters out.

    My third motive was to hopefully generate some income. I’m hoping that some of the users of the plugin will want help either integrating it or help with the broader challenge of creating or updating their websites. There happens to be “donate” links all over the place, but as of this writing (nearly two months since release) the donate links have generated exactly $0, and I’m not hopeful that that will change. It is such a common model on the Internet that software and information is given away “for free” in exchange for advertisement revenue or data collection on the (often unsuspecting) buyer that people have just come to expect that Internet software is free.

    Submitting the WordPress plugin to WordPress.org

    Anyone can write a WordPress plugin that can be installed fairly easily without submitting it to WordPress.org, and in fact if your primary goal is to sell your plugin then you probably want to avoid the WordPress.org catalog completely. However, there are some unique advantages to having your plugin in the catalog.

    Probably the biggest reason to put your plugin into the catalog is that it’s the easiest place for people to find it. The WordPress administrative interface for plugins allows a site builder to search the catalog directly from the admin section. If the plugin isn’t in the catalog, the next option is to install a plugin manually. That’s not difficult: it’s just a matter of uploading a .zip file, but of course you have to have the file to upload, which means finding it on your own.

    Having WordPress.org include your plugin into the catalog also confers a certain authority to it. A rather strict set of tests are made to (hopefully) ensure that the plugin doesn’t pose a security threat for the site it runs on and that the plugin will not interfere with others. All things being equal, it’s reasonable to trust a plugin from the WordPress.org catalog over one that is sourced elsewhere.

    One of a couple of highly detailed feedback emails from WordPress.org regarding my plugin submission.

    The first time I submitted my plugin, I fairly quickly received a reply with a short list of corrections that had to be made. It took a couple more tries to get it all right, but within a week or so of starting the process, my plugin was accepted.

    What I learned

    The first lesson from submitting a plugin to WordPress.org was about their use of namespaces. Every function, variable, etc. in a plugin must be unique, and I suppose that means that every plugin on your site can theoretically call every other plugin. This is at the same time fascinating and pretty worrisome. It’s hard to see this sort of thing flying in the present day, but it is the reality in WordPress land. It certainly makes plugins powerful, that’s for sure.

    Another lesson had to do with how serious they take the sanitizing of I/O. There were a number of functions in my plugin which seemed completely safe to me, but whose output still needed to be run through various WordPress functions to sanitize. These folks have been at this a long time, and it’s hard to argue that they aren’t doing things the right way. It’s a little extra trouble for the developers, but one does need to be careful these days.

    I was extremely impressed with the communication I received from WordPress.org during the submission process. I think my code must have been run through some automated checkers, just based on how quickly I received my feedback (usually the next day). I’d be inclined to suspect that the code was only run through some automated checkers, but when things got very granular at the end I did receive some highly personalized feedback from the reviewer. Somebody really did take the time to answer my questions and provide feedback. And the lengthy emails I received were highly informative even when a lot of it must have been boilerplate. All in all, I certainly felt better shepherded through this process than I was years ago with my first iOS app submission (though maybe that’s better these days, too).

    Would I do it again?

    I’m not sure when I’ll have the opportunity to write another WordPress plugin. The main reason is I’m not sure when I’ll really have something that I think would be a worthwhile contribution. There are a zillion plug-ins out there, and I can usually find one that does what I need it to without having to write my own code. Still, if I do come up with some idea that would make a great plug-in, I would definitely go for it. I might spend a little more time thinking about how to monetize it, though, because the donations concept is not a winner.

    In closing, if you have a killer idea for a plugin and would like to hire me to build it for you, you know where to find me!

     

  • on Replacing your Peloton Pedals

    on Replacing your Peloton Pedals

    What pedals should I replace my Peloton pedals with?

    Peloton shoe - underside

    I have been asked that question numerous times since I wrote my blog post on broken Peloton pedals and the need to replace them periodically (about every 12 months, according to Peloton). You’re a busy person, so I’ll give you the short answer first…

    Answer: just about any “delta” or “look”-style pedal will do.

    Why these particular pedals? The answer has to do with the Peloton shoes and not the bike. As you can see from the photo, the Peloton shoe has three screw holes for the cleat, arranged in a triangle pattern (a.k.a. a “delta”, which is what gives the delta-style clip its name). So, you need to find a pedal that uses a compatible cleat. You’ll get a pair of cleats in the box with your new pedals, so if you’re the only Pelotoner in the family you are all set. If not, you may need to buy cleats for the other riders, as there can be variations between the different delta-style manufacturers that could necessitate new cleats. Fortunately, cleats aren’t all that expensive if you need to buy them.

    On my road bike, I have SPD pedals, which make it easier to clip-in and clip-out and therefore more to my liking for actual road use. Neither of these things is particularly important for Peloton use, at least in my experience. Needless to say, if you’re not using your Peloton shoes, SPD might be an option for you. (If your shoes are SPD ready they’ll have two screw holes side-by-side, close to one another near the centerline of the shoe.)

    There aren’t too many variables when buying pedals and cleats, but one you should be aware of is “float“. Float has to do with how much lateral motion is allowed when clipped in, meaning how much your heel can swing in or out before you actually unclip. Float can range from zero to a few degrees of angle. I don’t have any reference information to back me up, but I believe the stock Peloton cleats have zero float — you’re pretty locked-in on those. Whether you want to go with something a bit more permissive is really up to you.

    My best advice is to ask at your local bike shop. You could even bring your shoes. Any pedals they sell you will work because the threaded holes on the crank arm is standard, so the fact that you are shopping for pedals for a Peloton bike and not a road bike doesn’t really make a difference.

  • Ban the Tron Bike?

    Ban the Tron Bike?

    Just about every time I ride Zwift, I wish I hadn’t won the Tron Bike. I still remember how much I wanted it at the time, and I remember how hard it was to get, but now that I’ve had it for a while, I am actually a little sad that this part of the Zwift story is over for me.

    The Tron Bike

    If you’re reading this post, you’re probably already familiar with the Zwift Concept One bike, which is far better known by its nickname, the “Tron Bike”. Unlike most other bikes in the game, it can’t be bought, it has to be earned by completing the Everest Challenge and then climbing another 50,000 meters. It’s something within the reach of any Zwifter with enough perseverance (you don’t have to do it in one climb, after all!) but it can take a long time. Even Zwift authority and podcaster Simon Schofield famously has yet to earn his Tron bike (his co-hosts rib him in practically every episode over it, too!).

    You get a Tron Bike! And you get a Tron Bike!

    The Zwift Concept One bike is the ultimate Zwift bike, and therein lies the problem. Once you have it, you’ve essentially won the bike acquisition game, and then what are your drops for? I have literally millions of drops and counting, but nothing to spend them on.

    Now, technically, there are bikes that do just a little better climbing, and a few others that do a bit better on the flats, but for an all-around bike, nothing is superior to the Tron Bike.

    the Tron Bike, as it compares to other available bikes, in climbing and flat-road speed. See Zwift Insider’s analysis for full details.

    And that is precisely the problem! The whole part of the game where you sweat to unlock enough levels and earn enough drops to level-up your bike is essentially short-circuited by the Tron Bike. Yes, I do have a bike for when all I’m doing is climbing the Alpe and another bike for pool-table flat routes (not to mention a mountain bike when I’m forced to go offroad) but most of the time I am riding on some kind of mix of flats and hills, and for that there may be other bikes that are arguably as good, but none clearly better than the Tron Bike.

    Maybe this wouldn’t annoy me so much of the Tron Bike weren’t so boring. Yes, you get to pick the color of your wheels, but in reality there are only about five colors to choose from. Your bike has no water bottle, so you don’t get the drinking animation, nor do you get the standing animation on hills (only for sprints). When you’re in the draft, the Tron Bike rider doesn’t sit up like the riders of other road bikes, so it’s a little more difficult to know when you’re in the draft. In short the Tron Bike rider is the least-animated rider in the game. And it seems that a quarter of the riders in the game have a Tron Bike, sometimes I even lose track of which one I am in a peloton. As hard as it is to get this bike, it’s still too easy, and once you have it you have it forever.

    Which one am I? Sometimes, in the events where we all wear the same jerseys, I have trouble telling which is me, which can be a drawback when sprinting.

    (since I’m on the subject, I also have the Century Kit, which you are awarded after a 100 mile ride in Zwift. Again, a real pain to accomplish, and again more or less –in my opinion, anyway– the ultimate accomplishment as far as special kit goes. But it’s just basic black and, like the Tron Bike, that gets boring after a while. Ah, well.)

    Make it hurt

    Everyone who has a Tron Bike knows that when it comes to fitness, the rent is due every day. Sure, you can coast for a little while, but your fitness has to be re-earned on a regular basis. Maybe the same thing should be true for the Tron Bike. Maybe you need to climb a few thousand meters a month in order to keep the bike. Something. When somebody shows up with a Tron Bike, it should inspire shock and awe. It should be rare, it should be hard to get, and it should be hard to keep.

    I don’t want to end the post on a down note, so let me close by saying that the Tron Bike is a cool piece of gear, no question about it. The first thing I did when I got mine is head to the volcano, because when you see that bad boy light up inside the lava caves, well, that is priceless.

  • ACCT executive director resigns

    ACCT executive director resigns

    Today Aurora Velazquez resigned her executive director position at ACCT Philly (Animal Care and Control Team Philadelphia).

    ACCT has been widely criticized from many sides for the conditions of the shelter and lapses which included procedural errors that led to (among other things) the mistaken euthanization of a dog put into their protective custody. Ultimately, a change.org petition demanding the removal of key leaders at ACCT Philly has garnered more than 34,000 signatures. This petition cites a number of failures at ACCT Philly.

    In September, ACCT Philly posted something of a mea culpa on Facebook, acknowledging the disturbing findings of a then-recent inspection by the Bureau of Dog Law Enforcement, which went so far as to ask the PSPCA to investigate ACCT Philly for animal cruelty (stemming from unsanitary conditions in the kennel). Though the PSPCA’s report found that the problems at ACCT Philly did not rise to the level of animal cruelty, this did very little to mollify the critics, some of whom accuse PSPCA of being as dysfunctional as ACCT Philly and unqualified to act as judge.

    Although many people that PennDog admires signed the change.org petition, PennDog did not. Although I try to educate myself as well as I can on these matters, I simply cannot say whether ACCT Philly will be better off under new management. I say this for two reasons:

    First, although I do not know Ms. Velasquez, I do know many people in the animal welfare field and I have yet to meet a shelter director who was motivated by anything other than a deep desire to care for animals. Nobody does it for the money or the fame, because there is very little money and no fame at all. Nobody in shelter leadership has enough help, or money, or time to do everything they wish they could do for the animals in their care. To accuse a shelter leader of not caring about their animals is completely inconceivable to me. Of course, that doesn’t mean that every shelter leader is the best person for the job, or that some shelters wouldn’t benefit from a change in leadership, but it is far too reductionist to point at a troubled or failing shelter and assume that replacing the leadership will necessarily improve the situation.

    Second, ACCT Philly has been for years woefully under-funded. In 2017, then-HSUS board member Marsha Perelman testified before the city council (with data) that “Philadelphia is the most poorly funded municipal shelter in America” and “dead last among major cities.” As Philadelphia’s only open shelter, ACCT Philly has essentially no control over how many animals they are tasked to take care of or the condition of these animals on intake. This is pretty much a worst-case scenario for a shelter — very little money and an essentially unlimited mandate to provide services. When a system breaks down, it is reasonable to ask whether even the best leadership could have prevented what has happened. I do not know the answer to that question, and I doubt anyone does.

    Although the pandemic did lead to unprecedented rates of adoption for shelter pets (at least in the first year or so), the news has not been all good for animal shelters. COVID outbreaks among shelter staff are practically catastrophes, because one cannot simply shut down operations for a couple of weeks while everyone quarantines. Animals, too, are contending with their own epidemics and while you could argue that some of ACCT Philly’s failures contributed to the spread of disease in the shelter, it would be grossly unfair to suggest that they are at the root of the problem.

    In the end, it is hard to know whether ACCT Philly will be helped or hurt by a changing of the guard. Surely, the situation today is terrible and everyone wants to see conditions improve. Will the next Executive Director have the right combination of knowledge and skills to right the ship and improve the lives of their animals? We can only hope so. Personally, I’d feel better if Philadelphia gave their animal control team (whether it remains ACCT Philly or another organization) funding on par with other cities even close to its size. On-par facilities with on-par funding would no doubt yield better results than finding even a superstar Executive Director and dropping them into the current environment. It is reasonable to ask if Ms. Velasquez and other ACCT Philly leaders could have done better, but we shouldn’t stop there.

  • Pittsburgh moves to ban declawing of cats

    Pittsburgh moves to ban declawing of cats

    This week Pittsburgh’s City Council advanced legislation that would make it the first city in Pennsylvania to prohibit the practice of declawing cats. The ordinance, #1877, has the hashtag-ready name “Ordinance amending The City Of Pittsburgh Code, Title Six (“Conduct”), Article III (“Dogs, Cats And Other Animals”), Chapter 633 (“Dogs And Cats”), by adding a new Section 633.25, Prohibiting The Declawing Of Cats“.

    Declawing is still a fairly common practice in this country, but in recent years opponents have ramped up their efforts to educate the public on the gory details of this surgery. Although it may seem to be analogous to maybe a extreme version of cutting one’s nails or perhaps the surgical removal of the nails themselves, declawing actually involves removing the last phalange of each toe — the equivalent of cutting of each of your fingers at the last knuckle. (as the Humane Society puts it, it’s not just a manicure.) Opponents say that this is needless surgery at best and may cause the cat residual pain and contribute to other problems down the line.

    Like other cosmetic surgeries for animals, declawing is banned in most European countries. In Israel, declawing a cat can land you in jail. Things move more slowly in America (probably having something to do with “freedom”), and as of yet no state has banned declawing, though several municipalities (mostly in California) do have bans in place. Among the groups fighting a ban are some veterinarians who, of course, profit from performing declawing procedures.

    Although Pennsylvania can boast perhaps the country’s oldest animal rights organizations, it would be a stretch to say that it is often out in front of efforts like these. Penn Dog congratulates Pittsburgh on its leadership and hopes that the rest of Pennsylvania will follow.


    REF: Pittsburgh council advances law banning cat declawing surgery
    REF: Fact sheet on declawing

  • Apple TV Siri Remote and Zwift

    Apple TV Siri Remote and Zwift

    If there is one thing that Zwifters using the Apple TV have been able to agree on, it’s the frustration of trying to use the horrible Apple TV remote with the Zwift interface. While I think part of the blame can be placed on Zwift for not being better able to optimize their app for the hardware available, the Apple TV remote’s touchpad is notoriously difficult to use (as anyone who has tried to enter a complex password into and Apple TV app will attest) and is nightmare for Zwifters.

    Trying to switch bicycles in the middle of a ride using the Apple TV is excruciating. Here I am, with a heart rate north of 160, trying to calmly scroll just one bike down in the list — and scrolling down three instead. Back up one, back up three, down two… and all the while other riders passing you by as you sit at the side of the road in your misery.

    The Olympic biathlon should consist of Zwifting and using an Apple TV remote. That is far more difficult than aiming a rifle after cross country skiing at top speed for a couple of miles.

    Alternative Remotes to the Apple TV remote

    Channelmaster remote

    The first remote I tried to replace my Apple TV remote was the Channelmaster CM7000-XRC remote, which I was attracted to because it has honest-to-goodness arrow keys instead of a touchpad. My kingdom for an arrow key!

    Unfortunately, this remote did not work with Zwift, and had trouble with other apps on my Apple TV as well. Basically, any interface that didn’t have items lined up in a very neat grid (like the Home Screen) was just too hard to navigate with the Channelmaster.

    The Real Problem

    Now that the Apple TV remote isn’t a complete design disaster, there is only one thing between Zwifters and being able to actually navigate the Zwift menus, and that is the Zwift menu interface itself.

    The problem with the interface is that the UI elements are often stacked one on top of another, and there is no clear way to signal that you (the user) want to interact with an element or go to the next one. For example, there are many scrollable elements (selecting a route, a pace partner, a workout) on the menu screen, and although you can scroll up and down through the list, there are also UI elements below (and often above) the list. It becomes frustratingly difficult to navigate the list without accidentally navigating to those other items. With the new remote, you can “click” the outside wheel to navigate, but in Zwift doing so always selects the next UI element, not the next item inside the UI element you are working in. If Zwift could organize the elements so that they are in a grid (which is how Apple’s own on-screen interfaces all work), working within their menus would be infinitely easier.

    It is extremely difficult to scroll down this menu. Clicking the bottom of the scroll wheel doesn’t pick the next item in the list, rather it jumps down to the “Cancel” or “Next” buttons.

    Siri Remote for Zwift?

    I was very enthusiastic to see that Apple had redesigned the remote for the new Apple TV, and put in my Father’s Day request right away (Happy Father’s Day to you all, BTW). I’ve just tried out and here’s what I found.

    [sad trombone sound effect]

    Unfortunately, the “click wheel” arrow buttons on the Siri Remote do not allow me to scroll through menus in Zwift, which was the one thing I was desperately hoping for. You can scroll up and down using the wheel (basically, the edges of this new, round trackpad), but there’s no way to go “up one” or “down one”, which is what we really need. I haven’t tried it out while actually Zwifting yet, so I can’t say if it works better than the old remote, but I can tell you that it doesn’t do the thing I really was hoping it would do.

    As a small consolation prize, it does seem like a much better thought-out device. It has a better shape, you can tell the top from the bottom without really examining it too closely (unlike the old remote, which gave you a 50-50 chance of picking it up with the touchpad on top), and seems better in nearly every way. I should also say that there isn’t anything about this new remote that seems to get in the way of Zwifting, so if you go this route at least you don’t have to have one remote for Zwift and another for all the rest.

    It’s up to you, now, Zwift

    OK, Zwift, the ball is in your court. Apple just redesigned their remote, and it’ll probably be years before they do it again. You are our best bet now. Please find some way to allow us to pick routes, change bikes, etc, without the agony of the touchpad! How about a closet in the Zwift garage where I can put all those bikes that I’m never going to ride (who needs more than three or four bikes in this game?), right next to the fifty jerseys I’m never going to wear?

    It’s a great game, and it’s been great watching it evolve over the last couple of years, but that doesn’t mean it hasn’t been frustrating, too.

  • On the Peloton Strive Score

    On the Peloton Strive Score

    Before I begin discussing the Strive Score, let me note that I’m not a doctor or any other type of accredited authority. I’m just an ordinary Pelotoner who likes data. This blog should not be used in place of advice from a real medical expert.

    On April 30th, 2021, Peloton announced a new heart rate-related metric across all workouts. They call it “Strive Score” and here’s how they describe it:

    Strive Score is a personal, non-competitive metric that measures your performance in every workout—from equipment to the floor. All you need is a compatible heart rate monitor…and some good old-fashioned motivation.

    Peloton PR

    The Holy Grail, not just for Peloton but for all on-and-offline fitness programs is finding some way to quantify effort in a way that is meaningful regardless of your personal physiology and fitness level. This sort of universal measurement has so far eluded sports science, and is a huge barrier in the automation of any sort of personalized training program. Some day, when science has evolved sufficiently, we will look back at the sort of metrics we use today as being very crude, but nevertheless today this is what we have to work with.

    Peloton’s best metric in this regard is the good ol’ FTP number. FTP, Functional Threshold Power, is a number which is arrived at by actual experimentation on the athlete. Basically, to find your FTP score, you work as hard as you possibly can for a period of time, and however much work you can do (a multiplier might be involved depending on how long your test is) becomes your FTP. Your workout intensity is then based on that number (10 minutes at 80% FTP, 5 minutes at 110% of FTP, etc). Periodically, you re-test to recalibrate, and use the new FTP number as the basis of future workouts.

    The Strive Score explained

    Many people do not want to endure the FTP test, and that’s understandable. Unfortunately, if you’re not going to be using a benchmark that was at least arrived at using real-world data about you individually, you really have no choice but to fall back to something that is far more generic. This is where heart rate comes into the picture. Heart rate correlates to effort, of course. Your heart rate is slowest during most phases of sleep, and is highest when doing strenuous work such as running or climbing stairs. We’re all individuals when it comes to how quickly our heart rate increases under stress and how quickly it recovers when resting, but it’s generally safe to say that you’re generally working harder when your heart rate is higher, and working less hard when it is lower.

    The Strive Score seeks to quantify heart rate over time. Even sitting still you’ll generate a strive score value over time (at a rate of about 0.0048 points per second), as long as your heart is beating. The longer you go, the higher the score rises (so a ten minute effort at constant heart rate will yield double the score of a five minute effort at the same heart rate). Raising your heart rate above a certain percentage of your maximum heart rate* triggers a bonus multiplier (starting at 2x for heart rates above 65% of maximum).

    Peloton’s heart rate zones. Zone 1: < 65% max, Zone 2: 65%-75%, Zone 3: 75%-85%, Zone 4: 85%-95%, and Zone 5: > 95% maximum

    Since the heart rate multiplier and time are the only variables, it is fairly easy to calculate the theoretical minimums and maximums of the Strive Score, and they are as follows**:

    MinutesMinimumMaximum
    51.411.6
    102.923.2
    154.334.8
    205.846.4
    308.769.6
    4513104.4
    6017.4139.2
    9026.1208.8

    Note that the strive score is incremented every second, so you will not be able to hit the max score for an interval unless your heart rate is the maximum zone going into it.

    Reading the table: The table above lists the minimum and maximum attainable values for the indicated duration. For example, if your heart is beating, you cannot get less than a 1.4 score in five minutes of exercise, because you will be in zone 1 the entire time. If your heart rate is in zone 4 or above for the entire five minutes, your five-minute maximum would be 11.6 points. If you effort is not strictly zone 1 or zone 4+, your strive score will be somewhere between these minimums and maximums, depending on how many seconds you spend in each zone.

    Strive Score or FTP, which is best?

    I think I can say without fear of contradiction that the FTP test result, if arrived at after a valid test, is the best available metric of fitness available to us. It’s what I use to track my own fitness, and I rely on it more than I do heart rate or Strive Score.

    Another nice thing about FTP is that it is not a Peloton concept, but rather it is used in other areas of sport. Zwift has a very nice feature to calculate FTP, for example.

    All that said in favor of the FTP, the Strive Score has one very intriguing feature that FTP lacks, and that it is intended to be an indicator of effort rather than an indicator of achievement. As your fitness improves, it actually becomes easier and easier to hit your FTP numbers (which is why you need to re-test and re-calibrate periodically), because FTP is a measure of achievement, and when you’re fitter you can achieve more (or, in this case, achieve the same with less effort). Strive Score, as a measure of effort, should be less affected by your relative fitness (though it is, to some extent). For people seeking to improve their fitness, and who are looking to get some sort of feedback that they’re putting in the right amount of effort (at least, as compared to other attempts), the Strive Score could be a useful metric for that sort of information.

    * Maximum heart rate is estimated using age.

    ** The per-second strive point value of 0.00483 was arrived at through experimentation. Please let me know if you get markedly different results, and I will try to refine this value. I confess that I expected to find it to be a “rounder” number, such as 0.005, but it doesn’t actually seem to be quite that high.

  • It’s not easy being a pit bull

    It’s not easy being a pit bull

    If a dog spends over a year at a shelter, watching patiently as the dogs around her come in and out every few weeks, you can be pretty sure the dog has some medical or behavioral challenge that makes it necessary for the shelter take extra time to find the “just-right” adoptive family.

    Or maybe it’s just because she’s a pit bull.

    Shelter life is a challenge for any dog– for reasons that are probably not hard to imagine– but pit bulls have it even harder. There’s one particular dog that brings the whole issue into focus for me, and that’s a dog named Bijou.

    Bijou arrived in late 2018 from another shelter. She quickly gained fans among the volunteers for her cheerfulness and her enthusiasm for play. She was healthy, and at about five years old wasn’t so old that potential adopters shied away. She made friends easily. We had a lot of fun afternoons running around in the field, and this dog loved a Kong like no dog I’ve ever met. As for her adoptability, though, Bijou had two strikes against her. One is that, frankly, she’s not really into dogs.

    Some dogs just don’t like other dogs. They like hanging out with their people, and don’t really have much use for dog-friends. The reason why this is such a big deal for a dog like Bijou is that often in the shelter, when we have a long-time resident as well-liked as Bijou, eventually one of the volunteers adopts her. But the catch is that most volunteers, if their circumstances allow it, already have one or more dogs at home! Many of Bijou’s fans, myself included, just couldn’t take this dog home with them.

    The other reason that Bijou remained at the shelter, month after month, is that she is a pit bull, and life isn’t easy if you’re a pit bull. Many people fear you, and even if they don’t, they have to deal with friends, relatives and/or landlords who do. About ten months into Bijou’s stay in the rescue, I had the chance to show her to a great family that was looking for a playful dog. They all got along great during the “meet” and it looked like she had finally found her “furever” home. Later, though, there was bad news… the family told me that they were avid campers, and they learned that a pitbull would not be welcome in a lot of the places they go.

    Back to the kennel she went.

    Pit Bull: America’s Dog

    Petey

    It wasn’t always that way. For most of the breed’s history, pitbulls (which is actually a collection of several breeds: the American Pit Bull Terrier, the American Staffordshire Terrier, Staffordshire Bull Terrier, and a few others) were neither shunned nor feared the way the are today. Indeed, it would be easy to make the argument that the pitbull is “America’s Dog”. In the 1920s and 30’s, one of the most famous dogs in the country, Petey, was a pitbull (actually, two), as was Buster Brown’s trusty sidekick. Pitbulls weren’t fancy, but Americans tend to reject anything that seems too fancy, anyway.

    To illustrate the pit bull’s place in the American pantheon, you can see how often it appeared as a symbol of America during the world wars. While Germany was often portrayed by the dachshund and England the bulldog, no dog better suited America than the pit bull: no ifs, ands, or buts about it. (As a historical footnote, dachshunds were treated horribly by Americans during the wars, with the little dogs sometimes being beaten or poisoned by those who felt the little twenty-pound dogs posed a clear and present danger to the nation. At the same time, the German Shepherd Dog was renamed –temporarily– “Alsatians“, or just plain “Shepherd Dogs”.)

    Wallace Robinson poster featuring bull terrier
    Wallace Robinson produced several propaganda artworks featuring the pitbull representing America.

    Theodore Roosevelt had a pitbull, named “Pete” in the White House, but I won’t go into that particular case because Pete wasn’t exactly the model of good behavior. All I can really say is that, like people, all dogs are individuals and just as there isn’t anything about a pitbull that makes them somehow worse than other dogs, there also isn’t anything about a pitbull that makes them somehow better. So, let’s carry on.

    Not the original “bad dog”

    For a generation now, pit bulls have carried the stigma of aggressive, dangerous dogs, so it’s hard to imagine that fifty years ago, they were safely outside of society’s crosshairs.

    In fact, the first widespread breed-loathing in this country occurred in the late 19th century, and involved “spitz-type” dogs, a group that includes Huskies and Pomeranians, and stems from some dubious scientific claim that they were particularly susceptible to (carrying) rabies. This panic resulted in the widespread destruction of spitz-type dogs and breed-specific legislation, many of the same things we see today in regards to the pit bull.

    Pit bulls didn’t begin to get their bad reputation until the 1970’s. Beginning in that decade, the American people became increasingly fearful of violent crime. Whether the country did actually become more dangerous during this time or whether this was just a mass hysteria (or a combination of the two) no longer matters; Americans were convinced that violent crime was on the rise, and they were afraid. Fearful Americans sought dogs to accompany them for protection.

    For the well-to-do, the German Shepherd Dog was the protection dog of choice. (Notably, German Shepherd Dog bites outnumber pit bull bites in most tallies, but it is widely recognized that bite data is woefully poor as a whole and shouldn’t be relied upon.) The less-moneyed gravitated toward pit bulls which were smaller than GSDs, less costly to keep up, and easier to keep on a smaller property or an apartment. It goes without saying that in America, the less-moneyed classes also tend to be the minorities.

    Once the pit bull became associated with the poor and minorities, it became easy to use discrimination against the dogs as a convenient proxy for discrimination against their people. It may be illegal (and, in most circles, socially unacceptable) to refuse to rent an apartment to certain colors of people, but society considers it perfectly OK to refuse to rent an apartment to an owner of a pit bull, which statistically speaking is more likely to be a minority or member of the lower classes.

    Embracing the stereotype

    At this point, we begin to enter a cycle, when popular culture begins to embrace the bad-boy characterization of pit bulls. Some people took on pit bulls as pets precisely because they were considered dangerous, and encouraged their dogs to be aggressive. The pit bull became the dogfighting icon, and even though it has been a long time since there have been a substantial number of fighting dogs in this country, the perception has been cemented. Google the phrase “pit bull logo” and witness the preponderance of spiked collars and snarls. Increasingly, dog bite stories in the news tended to identify the biting dog as a pit bull despite very sketchy background information (“witnesses may be predisposed to assume that a vicious dog is [a pit bull]”).

    The first rows of a Google image search for “Pitbull Logo” shows clearly how we think of them.

    Breed-specific legislation — with no foundation in reliable data — targeted pit bulls in a number of American cities, and are only recently being rolled back as we, as a nation, begin to realize the flimsy rationale and bad data behind them. In 2020 the people of Denver to vote to lift a pit bull ban that costs the lives of thousands of dogs — dogs that had no history of aggressive behavior. The ban had been in place for thirty years.

    Although America is far from being able to free itself from widespread racism, there are very few places in this country one can openly embrace racism without becoming a social pariah. Not so with prejudice against pit bulls. People who pride themselves on their commitment to racial harmony and fairness in this country have no problem singling out one breed of dog (often based solely on appearance) and declaring them to be worthy of death. And America is not alone. Just last week in the UK, a dog who, in the words of the judge overseeing the case, has an “excellent temperament” and was not known “ever to have shown aggressive or dangerous behaviour”, will be put down because he is a pit bull-type dog, one of the breeds specifically impermissible under Britain’s Dangerous Dog Act.

    The legacy

    Even in the “woke” 2020’s, the discrimination we show against pit bulls is appalling. Pit bulls spend years in shelters hoping to be adopted, either because people fear them or do not want to take on the societal baggage associated with owning a pit bull.

    Thankfully, there are still people out there whose minds are a bit more open. Around Christmas time last year, a family — parents with two small children — came to the shelter to visit with the dogs. They had recently lost their family pet, they said, and although they were not looking to adopt another just yet, they thought the kids would enjoy giving treats to some of the shelter dogs and brightening their day.

    Then they met Bijou.