How to make a hollow node with PointSymbol=o?
\documentclass[12pt,border=15pt,pstricks]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}[showgrid,PointSymbol=none](-1,-3)(11,5)
\pstGeonode[PointName=none](2,4){A}(0,0){B}(6,0){C}
\pstCircleABC[PosAngle=180]{A}{B}{C}{O}
\pstGeonode[PosAngle=60](10,2){M}
\pstMiddleAB[PointName=none]{O}{M}{M'}
\pstInterCC[DiameterB=\pstDistAB{O}{M},PosAngleA=45,PosAngleB=-45]{O}{A}{M'}{}{D}{E}
{\psset{nodesepB=-1} \pstLineAB{M}{D}\pstLineAB{M}{E}}
\ncLine{O}{D}\ncLine{O}{E}
\pstInterLL[PosAngle=50,PointNameSep=.55]{O}{M}{D}{E}{H}
\pstRightAngle[RightAngleSize=.2]{D}{H}{M}
\ncLine{O}{M}
\ncLine{D}{E}
\psset{fillcolor=white,fillstyle=solid}
\pscircle(D){3pt}
\pscircle(E){3pt}
\pscircle(M){3pt}
\end{pspicture}
\end{document}
Simpler version
\documentclass[12pt,border=15pt,pstricks]{standalone}
\usepackage{pst-eucl,pstricks-add}
\def\r{\pscalculate{sqrt(10)}}
\begin{document}
\begin{pspicture}[showgrid,PointSymbol=none](12,8)
\pstGeonode[PosAngle={180,90}](4,4){O}(11,5){M}
\pscircle(O){\r}
\psCircleTangents(M)(O){\r}
\pstGeonode[PosAngle={45,-45}](CircleT1){D}(CircleT2){E}
\pstMiddleAB[PosAngle=-45]{D}{E}{H}
\pstRightAngle[RightAngleSize=.2]{D}{H}{M}
\pspolygon(O)(D)(M)(E)
\psline{-o}(O)(M)
\psline{o-o}(D)(E)
\end{pspicture}
\end{document}
\documentclass[12pt,border=15pt,pstricks]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}[showgrid,PointSymbol=none,dotsize=0.2](-1,-3)(11,5)
\pstGeonode[PointName={none,none,none,M}](2,4){A}(0,0){B}(6,0){C}(10,2){M}
\pstCircleABC[PosAngle=180]{A}{B}{C}{O}
\pstMiddleAB[PointName=none]{O}{M}{M'}
\pstInterCC[DiameterB=\pstDistAB{O}{M},PosAngleA=45,PosAngleB=-45]{O}{A}{M'}{}{D}{E}
\ncLine{O}{M} \ncline[nodesepB=-1]{M}{D} \ncline[nodesepB=-1]{o-}{M}{E}
\psline(D)(O)(E) \ncLine{o-o}{D}{E}
\pstInterLL[PosAngle=50,PointNameSep=.55]{O}{M}{D}{E}{H}
\pstRightAngle[RightAngleSize=.2]{D}{H}{M}
\end{pspicture}
\end{document}
For comparison: a TikZ version without tkz-euclide
and the like.
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{calc,through}
\tikzset{circle through 3 points/.style n args={3}{% https://tex.stackexchange.com/a/461180/121799
insert path={let \p1=($(#1)!0.5!(#2)$),
\p2=($(#1)!0.5!(#3)$),
\p3=($(#1)!0.5!(#2)!1!-90:(#2)$),
\p4=($(#1)!0.5!(#3)!1!90:(#3)$),
\p5=(intersection of \p1--\p3 and \p2--\p4)
in },
at={(\p5)},
circle through= {(#1)}
}}
\begin{document}
\begin{tikzpicture}[bullet/.style={circle,draw,fill=white,inner sep=1pt}]
\path (2,4) coordinate(A) (0,0) coordinate(B) (6,0) coordinate(C) (10,2)
node[bullet,label=above:$M$](M){};
\node[circle through 3 points={A}{B}{C},draw] (c){};
\draw[shorten <=-1cm]
(tangent cs:node=c,point={(M)},solution=1) node[bullet,label=above:$D$](D){}
-- (M) ;
\draw[shorten <=-1cm] (tangent cs:node=c,point={(M)},solution=2)
node[bullet,label=below:$E$] (E){} -- (M);
\draw (D) -- (c.center) node[bullet,label=left:$O$] (O){} -- (E) -- (D);
\draw (O) -- (M);
\path (intersection cs:first line={(D)--(E)}, second line={(O)--(M)})
node[bullet,label=above right:$H$] (H){};
\draw ($(H)!2mm!(M)$) coordinate(aux) -- ($(aux)!2mm!-90:(M)$)
-- ($(H)!2mm!(E)$);
\end{tikzpicture}
\end{document}