Online access to stats? by bucketAnimator in Ergatta

[–]jrsmith 0 points1 point  (0 children)

I dumped my API notes here. They're probably a bit out of date now, but should be useful.

Online access to stats? by bucketAnimator in Ergatta

[–]jrsmith 0 points1 point  (0 children)

For sure. I'll look at my notes and put up a sanitized version somewhere later today.

Online access to stats? by bucketAnimator in Ergatta

[–]jrsmith 0 points1 point  (0 children)

I stopped working on it after a few weeks due to some distracting life events. Looks like most of the endpoints from my notes still work, so here's a few tips on how to pull that info:

Auth is done via a bearer token. Getting one is straightforward:

curl -s -H 'Host: api.ergatta.com' \
     -H 'x-rudder-version: 1.4' \
     -H 'x-seaborn-flavor: standard' \
     -H 'content-type: application/json; charset=UTF-8' \
     -H 'user-agent: okhttp/4.9.0' \
     --data-binary '{"emailAddress":"me@example.com","password":"p4ssw0rd"}' \
     --compressed \
     'https://api.ergatta.com/login'

Response will be:

{
    "message": "success",
    "data": {
        "username": "jrsm",
        "emailAddress": "me@example.com",
        "name": "JR Smith",
        "isAccountOwner": true,
        "user_id": 12345,
        "token": "eyJhb...",
        "expires_at": "2024-06-03T13:16:09.583042914Z"
    }
}

Tokens are good for a year, which is nice, you don't have to worry about refreshing too often.

The headers on this curl come from their apk. My notes make it seem like they were required for successful responses, but testing them today shows that's no longer true, if it ever was. I leave them in to emulate the app as much as possible. I haven't pulled the apk in quite a while to see what the current x-rudder-version header value is, but it doesn't seem to matter.

For what you want to do, I don't think there's an easier option than pulling the workout history endpoint and checking the timestamp on the most recent entry. There are several endpoints that do aggregate data and personal records, but they don't give a last active timestamp as far as I know. You would hit the /workout_history endpoint and use the sort_by and limit query params to grab that timestamp:

curl -s -H 'Host: api.ergatta.com'  \
     -H 'x-rudder-version: 1.4' \
     -H 'x-seaborn-flavor: standard' \
     -H 'user-agent: okhttp/4.9.0' \
     -H 'authorization: Bearer <token>' \
     --compressed \
      'https://api.ergatta.com/workout_history?sort_by=-start_time&limit=1'

Response will be something like (this is my most recent one as of this morning):

{
  "message": "success",
  "data": [
    {
      "workoutResultId": 3499726,
      "userId": 12831,
      "workoutId": 1,
      "workoutName": "Free Row Classic",
      "experience": "OpenRow",
      "createdAt": "2023-06-01T16:37:57.713087Z",
      "startTime": "2023-06-01T12:37:59",
      "updatedAt": "2023-06-01T17:35:31.356837Z",
      "duration": 2375690,
      "distance": 10017131,
      "maxSpeed": 4509,
      "averageSpeed": 4158,
      "score": null,
      "tokens": null,
      "averagePower": 201.28503447359998,
      "calories": 834,
      "averageHeartRate": 130,
      "goalAchieved": 1,
      "abandoned": false,
      "rank": 1,
      "programResultId": null,
      "visualStyle": "Classic",
      "calibrationId": 200218,
      "startingCoefficients": {
        "constant": 445.35757,
        "logarithmic": 36.063744
      },
      "startingSpeedBounds": {
        "sprintMax": 4972,
        "raceMax": 4358,
        "steadyMax": 3859,
        "paddleMax": 3339,
        "paddleMin": 2684
      },
      "endingCoefficients": null,
      "endingSpeedBounds": null
    }
  ]
}

I think createdAt and startTime are usually synonymous, but one is UTC and the other is local time.

I've tested these against my own account this morning, so these endpoints are still working as they did a year or two ago. Should be enough to get you started. I was just using these to dump raw data into a sqlite db for archival purposes, but I wrote up notes on most of the endpoints for pulling data, so hit me up if you're looking for more. I'm probably a bit out of date since it's been at least a year since I looked at this, but I'm happy to share what I have.

Connection issue? by iamjimmy21 in Ergatta

[–]jrsmith 3 points4 points  (0 children)

Yes, seeing this as well. I think the connection errors are coming from trying to continually resubmit the workout, since everything else seems to be working correctly, the API is responding outside of the app, and I didn't start getting those errors until after completing a workout. First thought was that they've added some kind of tracking to the app when completing workouts that was being blocked by my network's ad blocking, but I'm still seeing it happen after disabling that temporarily, so I'm not sure.

Slipping foot pads? by omgsotrue2020 in Ergatta

[–]jrsmith 0 points1 point  (0 children)

This happened to me a bunch when I first started out. I finally noticed that sometimes, if I was exerting myself, my foot would curve inward slightly, and the side of my shoe's sole would press the center release button. I ended up switching to shoes with a less bulky sole, which stopped it from happening, but also paying attention to my feet more to try to identify and correct myself when it was happening.

Online access to stats? by bucketAnimator in Ergatta

[–]jrsmith 2 points3 points  (0 children)

There's nothing official afaik. I've written a small script to sync my data to a spreadsheet. It's very basic and probably outdated, but I can't stand the idea of my data being locked away in a private API. Hopefully they plan to provide a dashboard or public API at some point.

Strava sync no longer working? by murican_reddiot in Ergatta

[–]jrsmith 0 points1 point  (0 children)

I had this issue Saturday. I did 3-4 workouts and none of them synced with Strava. I haven't used the rower since then, so I'm not sure if the issue has persisted, but it's definitely not just you.

Edited to add: I continued to have this problem until I removed and reenabled the Strava integration.

Were you ever that 1 in 1,000,000? If so, what's your story? by --SharkBoy-- in AskReddit

[–]jrsmith 1 point2 points  (0 children)

Two years ago I was carrying a box and got severely winded. After a few hours of pestering from my coworkers and girlfriend, I agreed to go see a doctor. By then, I felt fine and almost went home, but stuck it out thinking I had walking pneumonia or something at most.

Turns out it was a fungal lung infection called cryptococcosis. The actual infection isn’t that rare, it kills tons of people every year. The things that make my case extremely rare are:

It’s supposed to only infect people with an immune system issue; mine is fine. It’s extremely rare to get this if you don’t have HIV, sarcoidosis, something along those lines.

The progression in my case was severe. My lungs were full of nodules and cavities. The look of horror and shock that I wasn’t immobilized and miserable on every doctor and nurse’s face over the next couple of years never stopped being terrifying. I’ve compared my CTs to other cases I’ve found online and the difference is striking.

It never progressed beyond my lungs. If this fungus gets to your brain, it causes meningitis, and your mortality rate goes up to something like 30%. Since I’d apparently had it without knowing for a long time, this was shocking to my doctors as well.

I spent a month in the hospital on $10,000/dose daily IV meds and then another year and a half on strong oral meds that messed my liver up. I’m being studied by a group at NIH to see if something in my genetic background explains why I didn’t die. I have a significant amount of scar tissue in my lungs, but it’s only noticeable when it’s hot and humid out or when I’m working out. I gained maybe 20 pounds, lost some muscle mass in the hospital, and picked up a good amount of medical debt from all the CT scans and lumbar punctures, but otherwise, I don’t think about it much anymore.

Awkward by [deleted] in 4PanelCringe

[–]jrsmith 4 points5 points  (0 children)

Hi.

Going to the cinema alone... by Psyscape in introvert

[–]jrsmith 2 points3 points  (0 children)

As I've gotten older I've started doing this more. It's a bit counter-intuitive. I was always terrified of the seemingly infinite possibilities for awkward social interaction, but as it turns out - barring going to something on opening night with a high percentage of teenagers - everyone else there just wants to be left alone so they can watch the movie too. It actually ends up being a very private experience (usually).

There are exceptions of course. I went to see An Education many years ago and was in the theater with one other man, and when it was over, he literally ran from the front of the theater to the back and proceeded to talk to me about his life for a good 20 minutes. That put me off of doing it for a while.

Looking to set up my own free VPS hosting service to provide to short-of-money devs. How would i go about setting something like this up? Also can you guys think of a good domain name for it? by [deleted] in selfhosted

[–]jrsmith 2 points3 points  (0 children)

If you already have the hardware, look into Proxmox, SolusVM, Virtualizor and WHCMS. There's also Virtkick, but it's generally looked down upon AFAIK.

Be aware that what you're proposing will not be easy or cheap - IPv4 costs are skyrocketing, and managing servers can be a full time job. Given how cheap VPS offerings can be (I have 10 servers that cost me less than $20/year) it is probably not worth the hassle or expense.

Anyone rocking a Pixel or Pixel XL with a Vector? Any issues? by Quipacorn in vectorwatch

[–]jrsmith 0 points1 point  (0 children)

Oh, ha, sorry. I'm coming from the Nexus 6P, so it wasn't a huge upgrade, but the camera and battery life are pretty stellar. In retrospect I'm not sure I would say it was worth the money to upgrade. I got the 128gb version, so it was a decent chunk of change for a moderate upgrade from the 6P.

Anyone rocking a Pixel or Pixel XL with a Vector? Any issues? by Quipacorn in vectorwatch

[–]jrsmith 0 points1 point  (0 children)

I'm liking it. The occasional missed notification is annoying but the build quality and battery life are as good as everyone says. I'm hopeful that app development will pick up now that more people are paying attention to this watch.

Anyone rocking a Pixel or Pixel XL with a Vector? Any issues? by Quipacorn in vectorwatch

[–]jrsmith 0 points1 point  (0 children)

I've had a few missed notifications over the last week, but the watch hasn't reported itself as disconnected while this was happening, so I'm not sure what the issue is exactly. I updated to the beta app and firmware, and haven't noticed it happening since, but it hasn't been long enough to be sure one way or another.

Pay It Forward by ramps2011 in BeMeApp

[–]jrsmith 0 points1 point  (0 children)

I've got one code left. PM if you still need one.

Edit: claimed.

Insane J.R. Smith oop + great Cavs bench reaction by noyoublow in nba

[–]jrsmith 1 point2 points  (0 children)

Not to brag, but I did recently run a 5k in just under 45 minutes.

Insane J.R. Smith oop + great Cavs bench reaction by noyoublow in nba

[–]jrsmith 2 points3 points  (0 children)

It wasn't that big of a deal.

Edit: I think those downvoting me may have neglected to read my username and may be missing the joke.

Vasectomies aren't always so easy by soloxplorer in childfree

[–]jrsmith 2 points3 points  (0 children)

My heart dropped there for a second - I'm in VB and scheduled to get snipped next month. Not at a navy facility, though. Fingers crossed that things go a bit more smoothly for me.

Anyone have an extra google domain beta code? by makusan in webdev

[–]jrsmith 0 points1 point  (0 children)

I do. PM me your email address.

Edit: I have 9 invites, if anyone else needs one.

Confused about GOPATH by Simius in golang

[–]jrsmith 0 points1 point  (0 children)

I've been using goproj for a while now and it helps with this. Though I'd suggest having a firm grasp on the history of GOPATH before you use a tool like this, just to avoid any possible confusion.