checking whether a language is turing recognizable

After reading about it in the textbook and in the web, i was wondering about the "turing recognizable" concept.

so for instance, if i take a simple language like:"L = {< M > | M ACCEPTS < M >}", then it should be a turing recognizable language since there can be a turing machine that halts and accepts strings in it, and for strings not in that language it doesn't halt or just skip them.

however, how can i build such a turing machine(i mean the pseudocode for it)?

i know it's quite a simple question, but i rose it out of curiosity so i could learn and from that to adapt to more complicated problems.

thank you very much for helping me

Let $$U$$ be a universal Turing machine. Then running $$U$$ on the input $$\langle M \rangle, x$$ will produce the same output as running $$M$$ on the input $$x$$ -- that's what it means for $$U$$ to be a universal Turing machine. Others have shown how to build a universal Turing machine.
Then, you can build a Turing machine to do what you want by using $$U$$: namely, on input $$\langle M \rangle$$, your Turing machine should run $$U(\langle M \rangle, \langle M \rangle)$$. Or, to put it another way, your Turing machine should make a second copy of the input it receives on the input tape, then run $$U$$. If you know how to build a Turing machine to copy a bit-string, and if you have a universal Turing machine $$U$$, you'll have a solution for your problem.