Samul's Training and Nutrition Log

Most likely, my super long arms are the reason that DB’s work best for me with this, especially in the incline position - safest way for me to get a deep stretch in my chest without a bar wreaking havoc on my shoulders and sternum.

Besides that, I don’t always do them because they’re also tough on the shoulders, but if I had to answer that question objectively, I’d say weighted dips are king.

1 Like

Wouldn’t it be easy if everyone’s bodies where the same and we could just give definitive answers for everything?

I’ve always toyed with the idea of trying to combine a squeeze press with a regular press for total pec activation, but it feels like too much of a circus act to set up.

1 Like

It’d make sex pretty awkward.

You should, I’ve done them where every other rep is a squeeze press. The cool thing (terrible thing?) is you pause in the stretched position, and then have to rotate the dumbbells in with them just above your chest, which kind of gives you a fly motion, then you press up and squeeze, come back down, pause and slowly stretch back out the pecs before starting the regular press.

1 Like

That sounds like a far easier set up than my version with cables attached to each wrist while trying to press a dumbbell.

2 Likes

Oh, I thought by squeeze press you meant pressing the DB’s together with neutral grip so the DB plates touch each other, and keeping them touched throughout the entire movement while squeezing the pecs.

That was the inspiration for it, yeah. Trying to press while also trying to squeeze your arms together. It works so well in my head, I just can’t imagine it working like that in real life.

The problem is both pressing and squeezing your arms together achieve the same thing biomechanically: arm adduction.

That means that, as you try to press the dumbbell (adduct your shoulders), and their weight is opposing to that movement, you are also trying to squeeze your arms in (adduct your shoulders), and the cables’ weights are opposing to that. When you are at the top of the movement, you are still figthing the cables resistance to keep your arms together, but the dumbbells aren’t a factor anymore.

What ends up happening is you are still doing the same movement, but this time you’re fighting both the dumbbells and the cables. You know what would achieve the same effect (more resistance)? Heavier dumbbells haha.

It’s actually not a silly idea in theory–I thought about this for a while but then I realized that, on those exercises where you go for a strong peak contraction in the chest, the biggest advantage is that the shortened position is going to be the most difficult one (and in some exercises like a crossover you can actually get a higher degree of adduction than you can with presses), whereas if you add cables to a press, the last portion of the movement is still going to be the less loaded overall.

2 Likes

I feel like we’ve talked about this on the phone in the past, haha.

Yeah, I agree with you. My chest is not a weak pointer, so I’m not too worried about having to bring it up. It’s just a little frustrating to feel like you’re working hard and not feeling much in the muscle you’re trying to target, even if it’s clear it’s still working.

I’m trying to let my shoulders coming forward on db presses, although I’m not there yet because I’m very much used to holding my scapulae back as I’ve always done it that way. When I let protraction happen, I feel like I’m losing stability in the movement. I guess it’s a matter of getting used to it.

I’m in the same boat. My forearms die before my back does with heavier DB rows.

The solution I came up with- more DB rows.

I think doing gripper training is probably the best solution though. If that’s what T3hPwnisher did then I assume it works.

1 Like

Just got this pair of ankle straps that I ordered on Amazon a few days ago.

What am I gonna use them for? Cable lateral raises.

I had this idea a long time ago. Taking the grip away from the movement could make it easier to focus on what I’m trying to work: the delts obviously. I also have some issues with my left wrist and holding the weight out to my side with an unfavorable lever like in this exercise starts hurting after a while.

The other day, I saw Paul Carter’s post on Instagram in which he was using them and I was like, damn I thought of this too, I feel smart, haha. So I decided to give them a try.

Shoulder day will be in two days, I’m excited to give them a try. I’m also trying to figure out if they can have some use for back training as well.

1 Like

Bb row up to 62 kg x 12
Neutral-Grip lat pulldown 3 x 12 at 55 kg
Seated lat row 3 x 8-12 at 37-42 kg
Face pull 3 x 10-15
Cross body Hammer curl 3x12
Spider curl 3x12

One week into the mini cut, 4.6 pounds down. It’s working.

I remember Dave Tate doing this for chest flys(?).

1 Like

Very much possible

@Voxel

this was the most recent C exam I attempted. Unfortunately, I wasn’t able to submit a solution within 2 hours so I failed. I tried again when I got home after thinking some more about it and this solution came to my mind. it took me just over an hour. What you’ll see is what I should have done during the exam, lemme know how you like the code.

The assignment text is at the top of the program in the first comment, I just translated it. If it’s a little ambiguous and needs to be reread, that’s because the original one was too. Out of around 90 students, only 5 submitted a solution at all.

If the first thing that comes to your mind after looking at the program is “why the hell did you not use any data structure other than arrays?”, that’s because we were told to do so. They explicitly said that the problem didn’t need linked lists or any other dynamic structure to be solved.

I’ll get the 4 programs I talked to you about a while ago out to you tomorrow. Meanwhile, lemme know what you think of this one.

Hm, okay, I’m going to write out some feedback but be mindful that if you apply it all it might not make your TAs (or whoever grades you) too happy. Ask them whether or not they appreciate you putting in extra effort, or if they are only interested in having you solve the problem at hand.

As an example of a suggestion I’d make, that would be educational for you, would be to give more meaningful feedback on erroneous input. Let’s say some input can be wrong in two ways,

// Less good
if (!cond1 && !cond2) {
    puts("Wrong you buffoon!");
    exit(1);
}

I’d urge the following,

// Better
if (!cond1) {
    puts("Wrong you buffoon! Expected cond1 to be satisfied");
    exit(1);
}

if (!cond2) {
    puts("Wrong you buffoon! Expected cond2 to be satisfied");
    exit(1);
}

but if you apply this your software ends up being lengthier as a consequence. Sometimes, when someone grades you, they aren’t interested in how good you are, or how good a program you can submit, they only want it to be good enough.


Here are some remarks in no particular order, I do not consider the top-ones more urgent than the others.

A. Use the compiler

I’m not sure what C-standard you are being held to, but try compiling your program like this,

gcc -Wextra file.c # or whatever else your C-file is called

and you’ll get plenty of warnings.

  1. Fix those warnings
  2. Read up on other flags, here’s a good link
  3. Notice the flags that you feel would benefit you catch problems with your software and start using them
    4 (optional). If you are using Makefiles, update those
    5 (optional). Add an alias to your shell so that you can compile with those flags easy.

For 5, do this in your terminal: echo $SHELL and then google the last part of the output together with the word “alias”. Example:

echo $SHELL
/usr/bin/fish

Google “fish”.

B. Program structure

Decompose your program into additional functions, for instance, this bit

// get input
if(scanf("%d", &nMatches) != 1 || nMatches < 1) {
    puts("incorrect input.");
    return 0;
}

could easily be wrapped as a function called parseNumberOfMatches. I’d argue that for every input 1…4 it would have been prudent to write a function, i.e.

  1. parseNumberOfMatches() -> n (have this yields a number, I just call it n, so that item 2 makes sense)
  2. parseCategories(n) -> ??? (I write ??? because I want you to figure out what a good return would be here
  3. parseParticipants() -> p (spell participants correctly)
  4. parseScores(n, p) -> ???

And how could you write these and communicate that something went wrong to the caller?

and then the remaining bits belong in their own functions also,

  1. Find each category’s winner
  2. Overall winner

C. Explore alternatives

This remark is C-specific because there are a lot of functions around that shouldn’t be used anymore. Find alternatives for puts/scanf, when are they appropriate, what other alternatives are there? Do they offer more utility than these ones, and how much extra work would they comparatively be to use?

D. Exercise

How would you have to rewrite your program to be able to test it out automatically? I.e., if you were to write out the parsing functions I mentioned we could have this,

#include <stdbool.h>

int testThatNumberOfMatchesFailsOnZero() {
    // Figure out a way to get a number when the input is appropriate,
    // and something that indicates an error if something went wrong.
    // Add the necessary checks here to check that we get a failure
    // for the input of 0 and another test function that checks that
    // for a given input < 0 we also fail. Finally, one more test that
    // checks that for a given input number that is larger than 0 we
    // get that number back 
    parseNumberOfMatches(-1)
}

This might seem silly, as the purpose of parseNumberOfMatches is to give the number back to us if it is correct but it creates a “barrier” between getting the number from the user, and evaluating that number. Programs written in incremental steps like these are usually easier to change, test, and debug. So rather than

int parseNumberOfMatches() {
    // do some scanf-ing here
}

we adjust our program flow to go through the following sequence,

1. Get user input
2. Pass user input into validation function

Because now, unlike before, you can replace the user with a computer instead.


I had more thoughts but I don’t want to overwhelm you.

1 Like

are you familiar with the coding language r? I’m taking a comp-sci course next semester and might need some help

Familiar, yes. Know it, no.

But these practices rarely fail, regardless of the language,

  1. Write things out so that they work
  2. Improve on it

What does “improve” mean? To me, improvements make the code easier to test, understand, discard, and improve further. It does not necessarily mean that it is more abstract or easier to re-use.

I tend to let the following perspectives drive my process,

  1. My code should be understandable/documented to such an extent that I can die and someone else can take over. Other less morbid scenarios, falling ill, going on paternity leave, going on vacation, etcetera.
  2. I should be able to understand my code if I haven’t slept
  3. I should be able to understand my code if I’m drunk
  4. I should be able to understand my code when I get back from vacation
  5. Someone less intimately familiar with the problem your code solves should be able to understand the problem
  6. Someone with less experience should be able to understand your code (within reason)
  7. Someone should be able to change your code, and be confident that if the tests pass they didn’t break anything.

Hey, I appreciate the input. However, these programs are tested automatically and compared against an expected input. We are required to print out exactly what’s written in the assignment text.

As per dividing the program into sub functions, that’s a thing I always do. However, this was a time-limited test and our lecturer explicitly said, “if putting everything inside main() doesn’t make it too hard to understand the code, do it. This test is to see if you can fix a problem, not to check if you can do input acquisition,” so he suggested against breaking everything into functions.

I’ll get the other programs to you in a bit, and you’ll see that they are structured way differently. Output is more verbose and there are way more functions.

1 Like

I just hope I never have to test these maxims out :rofl: