Top ? is 1010 and the bottom-right ? is 108
Note that the numbers are arranged similar to a dartboard. This allows us to reorder the numbers to get the following: (/ denotes a space)
? 107 71 71 99 108 76 95 / ? 92 / 77 106 / 96 109 75 75 106
Breaking the code
With a bit of luck, I noticed that the first word could be PUZZLING. This gave a rather curious correlation - Z=71, N=76, G=95, L=99, U=107, and I=108. Notably, ZN are the bottom row of keys on a QWERTY keyboard, GL are the middle row, and UI are the top row.
Also, Z is to the left of the N by 5 spaces, G is left of L by 4 spaces, and U is left of I by one space. In fact if you draw a line from each letter diagonally up-left, you intercept the same digit key as the units digit.
The 7, 9, and 10 can be explained as the bottom row has 7 letters, the middle row has 9 letters, and the top row has 10 letters.
Armed with this, we can fill in the rest of the message: ?uzzling ?s my hobby.
Therefore, we need the values for P* (corresponding to 1 and at the top) and I (which corresponds to 10 and bottom right). For I, we know its value - 108. P is 1010, by concatenating the number of keys in its row, with the order from left to right (so qwertyuiop is 101, 102, 103, ..., 109, 1010).
*I suppose puzzling could be some other word like nuzzling, guzzling, or muzzling, but it seems the most contextually appropriate :P
Explanation of hint
Arrow tattoos on the fingers, with the clue "at the tips of his fingers" suggests that 1) arrows to suggest darts and looking at a dartboard, and 2) typing could be a hobby as well, since that definitely involves the fingers. The arrows could also help motivate looking at the number row as well.