text:
\section{Introduction}\label{intro}
Motivated by the appearance of Legendrian graphs in important results, the authors began studying them \cite{ODPa1}.
Two nice examples of such results are  Giroux's proof of existence of open book decompositions compatible with a given contact structure \cite{G}, and
Eliashberg and Fraser's proof of the Legendrian simplicity of the unknot \cite{EF}.
We anticipate that with a better understanding of Legendrian graphs, they will become an even more robust tool.

In \cite{ODPa1}, the authors extended the classical invariants Thurston-Bennequin number, $tb$, and rotation number, $rot$, from Legendrian knots to Legendrian graphs.
Throughout this paper we work in $\mathbb{R}^3$ with the standard contact structure, $\xi_{std}$.
The Thurston-Bennequin number measures the number of times the contact planes twist around the knot as the knot is traversed once, and can be computed from the front projection as $tb(K)=w(K)-\frac{1}{2}c(K)$, where $w(K)$ is the writhe and $c(K)$ is the number of cusps.
For a Legendrian graph, $G,$ with a fixed order on its cycles, the {\it Thurston-Bennequin number}, $tb(G)$, is the ordered list of the Thurston-Bennequin numbers of its cycles.
Similarly, the {\it rotation number}, $rot(G)$, is the ordered list of the rotation numbers of its cycles.
It is known \cite{El} that if $K$ is a Legendrian knot in  $(\mathbb{R}^3, \xi_{std})$ and $\Sigma$ is a Seifert surface for $K$, then $$tb(K) + |rot (K)| \leq - \chi(\Sigma).$$
This inequality puts an upper bound on the $tb(K)$.
\noindent In particular,  if $K$ is the unknot, then $tb(K) \le -1$.
There is a unique Legendrian unknot with maximal $tb(K) = -1,$ it is called the {\it trivial unknot}.
For a topological knot type $\mathcal{K}$, we denote by $tb_{max}(\mathcal{K})$ the maximum $tb$ among all Legendrian knots of topological type $\mathcal{K}$.

In this paper, we introduce a new invariant of Legendrian graphs, called the total Thurston-Bennequin number.
The {\it total Thurston-Bennequin number}, $TB(G)$, is the sum of $tb$s over all cycles of $G$.
We derive a simplified diagrammatic means of computing $TB(G)$ for complete graphs and complete bipartite graphs, and show that it depends only on the $tbs$ of the smallest cycles.
In particular cases, we show that the Thurston-Bennequin number $tb$ of a graph is determined by the total Thurston-Bennequin number $TB$.

The main theorems relate the total Thurston-Bennequin number of complete and complete bipartite graphs with the sum of the $tbs$ of their smallest cycles.
For a Legendrian embedding of the complete graph on $n$ vertices, $K_n$, in $(\mathbb{R}, \xi_{std}),$ we show:
\[
\begin{array}{ccl}
TB(K_n) & = & TB_3(K_n) \cdot \displaystyle\sum_{r=3}^{n}\frac{(n-3)!}{(n-r)!} \\\\
  & = & \left[(n-2)w_e(K_n)+w_{ae}(K_n) -\frac{1}{2}[(n-2)c_e(K_n)+c_v(K_n) ] \right] \cdot \displaystyle \sum_{r=3}^{n}\frac{(n-3)!}{(n-r)!},
\end{array}
\]
where $TB_3(K_n)$ is the sum of the $tbs$ over all $3-$cycles of $K_n,$ and $w_{\ast}$ and $c_{\ast}$ indicate different writhes and cusp counts described in Section \ref{GTBC}.
For a Legendrian embedding of the complete bipartite graph, $K_{n,m}$ with $m\leq n$ in $(\mathbb{R}, \xi_{std}),$ we show:
$$TB(K_{n,m})= TB_4(K_{n,m})\cdot \sum_{r=2}^{m} \frac{(m-2)!(n-2)!}{(m-r)!(n-r)!}, $$
where $TB_4(K_{n,m})$ is the sum of the $tbs$ over all $4-$cycles of $K_{n,m},$ and \\\\
$TB_4(K_{n,m})=$
\[
\begin{array}{cl}
  & (n-1)(m-1)w_e(K_{n,m})+(n-1)w_{ae[P]}(K_{n,m})+(m-1)w_{ae[Q]}(K_{n,m})+w_{ne}(K_{n,m}) \\\\
  & -\frac{1}{2}[(n-1)(m-1)c_e(K_{n,m})+(n-1)c_{v[P]}(K_{n,m})+(m-1)c_{v[Q]}(K_{n,m})].
\end{array}
\]
Here $w_{\ast}$ and $c_{\ast}$ indicate different writhes and cusp counts described in Section \ref{GTBB}.

Let a \textit{minimal embedding} of $G$ be one where all minimal length cycles are unknots with $tb=-1$.
An  \textit{unknotted minimal embedding} of $G$ is a minimal embedding where all the cycles are unknots.
We give some examples of minimal embeddings of $K_4$, $K_5$ and $K_{3,3}$.
For unknotted minimal embeddings of $K_4$ and $K_{3,3}$, using our understanding of $TB$ and the graphs structure, we show they have unique $tb$ and $|rot|$ up to relabelling of the cycles.
We give a lower bound for the $tb$ of an unknotted $r-$cycle in an embedding of $K_n$ with all $3-$cycles trivial unknots.\\

{\bf Acknowledgements.}  We would like to thank Youngjin Bae, Byung Hee An and Gabriel C. Drummond-Cole for useful conversation, and Tim Cochran and John Etnyre for their interest and support.

\section{The graph Thurston-Bennequin number for complete graphs}\label{GTBC}
In this section we introduce much of the notation and definitions that are used throughout this article.
This section is focused on the total Thurston-Bennequin number of a complete graph.
Here we prove the main theorem for the $TB$ of complete graphs and look at the consequences for embeddings of $K_4$ and $K_5$.

We first introduce notation and definitions.
\begin{definition}For a Legendrian graph $G$, we define the \textit{total Thurston-Bennequin number of $G$}, $TB(G)$, as the sum of Thurston-Bennequin numbers over all cycles of $G$.
For a Legendrian graph $G$, we define $TB_r(G)$ as the sum of Thurston-Bennequin numbers  over all $r-$cycles of $G$.
\end{definition}

\noindent
A  \textit{minimal embedding} of $G$ is a Legendrian embedding where all minimal length cycles are trivial unknots.
We denote by $G[\mathcal{K}]$ an embedding of the graph $G$ for which all cycles have the knot type $\mathcal{K}$.
We denote the unknot with $\mathcal{U}$.
An embedding $G[\mathcal{U}]$ with all minimal length cycles trivial unknots is called an \textit{unknotted minimal embedding}.
The set of all $r-$cycles of a graph $G$ is denoted by $\Gamma_r(G)$, or simply $\Gamma_r$ when $G$ is understood.
For a cycle $\gamma$ of $G$, we denote by $w(\gamma)$ and $c(\gamma)$ the \textit{writhe of $\gamma$} (signed sum of crossings of $\gamma$) and the \textit{number of cusps of $\gamma$}, respectively.
For edges $e$, $f$ and vertex $v$, we denote by $w(e)$ the writhe of edge $e$ with itself, by $w(e,f)$ the signed sum of crossings between edges $e$ and $f$, by $c(f)$ the number of cusps along edge $f$, and by $c(v)$ the number of cusps at vertex $v$, looking at each pair of edges going through $v$.
For a front diagram of a Legendrian graph $G$, we define
\begin{itemize}
\item the \textit{edge writhe of  $G$} as the sum of writhes over all edges of $G$, $w_e(G)=\sum_{f\in E(G)} w(f)$.
\item the \textit{adjacent edge writhe of $G$} as the sum of writhes over all pairs of adjacent edges of $G$, $w_{ae}(G)=\sum_{e, f\in E(G) \textrm{adj}} w(e,f)$.
\item the \textit{non-adjacent edge writhe  of $G$} as the sum of writhes over all pairs of non-adjacent edges of $G$, $w_{ne}(G)=\sum_{e, f\in E(G) \textrm{non-adj}} w(e,f)$.
\item the \textit{edge cusps of $G$} as the number of cusps along all edges of $G$, $c_{e}(G)=\sum_{f\in E(G)}  c(f)$.
\item the \textit{vertex cusps of $G$} as the count of cusps at all vertices of $G$,  $c_{v}(G)= \sum_{v\in V(G)} c(v) $.

\end{itemize}

\begin{theorem} Let $K_n$ be a Legendrian embedding of the complete graph on $n$ vertices in $(\mathbb{R}^3, \xi_{std})$.
Then $TB_r(K_n)$ is a multiple of $TB_3(K_n)$.
As a consequence, $TB(K_n)$ is a multiple of $TB_3(K_n)$.
The quantities $TB_i(K_n)$, $3\le i\le n$,  can be computed from writhe and cusp counts of vertices and edges in the front projection rather than summing the tbs of the cycles.
\label{TBKn}
\end{theorem}

\begin{proof}
When computing the sum of writhes over the $3-$cycles or the $r-$cycles of $K_n$, we consider crossings of an edge with itself, crossings between adjacent edges and crossings between non-adjacent edges.
\begin{enumerate}
 \item  Each edge of $K_n$ appears in $n-2$ of the $3-$cycles and in ${n-2 \choose r-2} (r-2)! = \frac{(n-2)!}{(n-r)!}$ $r-$cycles.
\item Each pair of adjacent edges of $K_n$ appears in one $3-$cycle and in $\frac{(n-3)!}{(n-r)!}$ $r-$cycles.
\item Non-adjacent edges do not contribute to the total writhe of the graph.
The cycles containing both edges $ab$ and $cd$ can be paired as  $...ab...cd...$ and
 $ ...ab...dc... $. The signed intersection of the two edges in one of the cycles is the negative of their signed intersection in the other cycle.
 This means that the crossings between the two edges do not contribute to the sum of the writhes.
    \end{enumerate}

  Items (1)--(3) above give $$\sum_{\gamma \in \Gamma_r} w(\gamma) = \frac{(n-3)!}{(n-r)!} \sum_{\gamma \in \Gamma_3} w(\gamma) =  \frac{(n-3)!}{(n-r)!} [(n-2)w_e(K_n)+w_{ae}(K_n) ].
 $$
Cusps occur either at a vertex, that is, at each pair of adjacent edges, or along one edge. Using (1) and (2) above, we have
$$\sum_{\gamma \in \Gamma_r} c(\gamma) = \frac{(n-3)!}{(n-r)!} \sum_{\gamma \in \Gamma_3} c(\gamma)=  \frac{(n-3)!}{(n-r)!} [(n-2)c_e(K_n)+c_v(K_n) ]. $$
For every cycle $\gamma$, $tb(\gamma) = w(\gamma) - \frac{1}{2}c(\gamma)$. Then the two identities above give
\[
\begin{array}{ccl}
TB_r(K_n)  & = & \frac{(n-3)!}{(n-r)!} TB_3(K_n)  \\\\
  & = & \frac{(n-3)!}{(n-r)!}\left[(n-2)w_e(K_n)+w_{ae}(K_n) -\frac{1}{2}[(n-2)c_e(K_n)+c_v(K_n)] \right]  .
\end{array}
\]
Adding over $r$ gives
\[
\begin{array}{ccl}
TB(K_n) & = & TB_3(K_n) \cdot \displaystyle\sum_{r=3}^{n}\frac{(n-3)!}{(n-r)!} \\\\
  & = & \left[(n-2)w_e(K_n)+w_{ae}(K_n) -\frac{1}{2}[(n-2)c_e(K_n)+c_v(K_n) ] \right] \cdot \displaystyle\sum_{r=3}^{n}\frac{(n-3)!}{(n-r)!}.
\end{array}
\]

\end{proof}

Theorem \ref{TBKn} has many consequences.
We focus on minimal embeddings.
For the front project of such an embedding, place all vertices of $K_n$ on the same horizontal line in the front projection.
Then place the edges adjacent to a given vertex as nested arcs, with no intersections between adjacent edges.
See the left image of Figure \ref{fig-Kn} for such an embedding of $K_6.$
All $3-$cycles in this embedding have a front projection like that of the unknot on the right in the picture and therefore are trivial unknots.

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(500, 85)
\put(0,0){\includegraphics[width=6in]{Kn-minimal}}
\end{picture}
\caption{\small A minimal embedding of $K_6$ and a $3-$cycle in this embedding. }
\label{fig-Kn}
\end{center}
\end{figure}

 \begin{subsection}{Remarks about $K_4$}
 \label{subsecK4}

 In \cite{ODPa1}, the authors showed there does not exist a Legendrian embedding of $K_4[\mathcal{U}]$ where all cycles are trivial unknots.
 Moreover, $TB(K_4[\mathcal{U}])$ is shown to be at most $-8$.
  Theorem  \ref{TBKn} gives a refinement of this result. For $n=4$, we have $$TB_4(K_4)= TB_3(K_4).$$
The graph $K_4$ has seven cycles, four cycles of length 3 and three  of length 4.
This means that for a Legendrian embedding of $K_4[\mathcal{U}]$ with all trivial $3-$cycles we have
$$TB_4(K_4)= TB_3(K_4) = -4. $$
For such an embedding, exactly one of its three $4-$cycles has $tb=-2$ and the other two have $tb=-1$.
This is the only way to have $TB(K_4[\mathcal{U}])=-8$.
If all the $4-$cycles have $tb=-1$, then $TB(K_4[\mathcal{U}]) =-6$, which is a contradiction.

The $4-$cycles of $K_4$ are equivalent under graph automorphism, so up to a relabelling of the cycles there is a unique $tb(K_4)$ for an unknotted  minimal embedding of $K_4$.
Since unknots with $tb=-2$ and $tb=-1$ are unique, there is only one possible $tb(K_4)$ and $|rot(K_4)|$ for an unknotted  minimal embedding of $K_4$.
In Figure \ref{K4examples}, we show two diagrams of an unknotted minimal embedding of $K_4$.
(See Figures \ref{K4flat-flat} and \ref{K4other-flat} for the equivalence.)
While there is a unique $tb$ and $|rot|$, this does not mean there is only one unknotted minimal embedding of $K_4$.

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(330, 75)
\put(0,0){\includegraphics[width=5in]{K4examples}}
\put(173, 33){\Large $\simeq$}
\end{picture}
\caption{\small Two diagrams of an unknotted minimal embedding of $K_4$.}
\label{K4examples}
\end{center}
\end{figure}

\begin{remark}
In more generality, for $K_n$ with all $3-$cycles trivial unknots and $4-$cycles unknots, one third of $4-$cycles have $tb=-2$ and two thirds of $4-$cycles have $tb=-1$.
This is because for every $K_4$ subgraph of $K_n$,  exactly one of three $4-$cycles has $tb=-2$ and the other two have $tb=-1$.
\end{remark}

\begin{remark}
The graph $K_4$ is adaptable \cite{Ya}, that is, given any set of seven knot types, there exists an embedding of $K_4$ with its seven cycles realizing the seven knot types.
All topological embeddings of a graph have a Legendrian realization \cite{ODPa1}.
Since $TB_4(K_4)= TB_3(K_4)$, if all cycles of $K_4$ are of the same knot type, $L$, with $tb_{max}(L) >0$, then at least one of the $3-$cycles has non-maximal $tb$.
On the other hand, if all cycles of $K_4$ are of the same knot type, $L$,  with $tb_{max} (L)< 0$, then at least one of the $4-$cycles has non-maximal $tb$.
\end{remark}

\end{subsection}

\subsection{Remarks about $K_5$} We look at unknotted minimal Legendrian embeddings of $K_5$.
Since $K_5$ has ten $3-$cycles, Theorem \ref{TBKn} for  $n=5$ and $r=4$ says $$TB_4(K_5) =2TB_3(K_5)=-20.$$
Each of five $K_4$ subgraphs of $K_5$ contains exactly one $4-$cycle with $tb=-2$.
This means that among the fifteen $4-$cycles of $K_5$, ten have $tb=-1$ and five have $tb=-2$.

For $n=5$ and $r=5$, Theorem \ref{TBKn} says
$$TB_5(K_5) =2TB_3(K_5)=-20.$$
In Proposition \ref{bound}, we show that the minimum $tb$ for an unknotted $5-$cycle is $-4$.
There are ten possible ways to write $-20$ as a sum of twelve integers in the set $\{-4, -3, -2, -1\}$.
These ten sequences are candidates for the $tb$s of the $5-$cycles of $K_5$:
$$s_1=(-1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2) $$
$$s_2=(-1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -3) $$
$$s_3= (-1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -3, -3)$$
$$s_4= (-1, -1, -1, -1, -1, -1, -1, -2, -2, -3, -3, -3)$$
$$s_5= (-1, -1, -1, -1, -1, -1, -1, -1, -3, -3, -3, -3)$$
$$s_6=(-1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -4) $$
$$s_7=(-1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -3, -4) $$
$$s_8= (-1, -1, -1, -1, -1, -1, -1, -1, -2, -3, -3, -4)$$
$$s_9= (-1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -4, -4)$$
$$s_{10}= (-1, -1, -1, -1, -1, -1, -1, -1, -1, -3, -4, -4)$$

Unlike unknotted minimal embeddings of $K_4$, an unkotted minimal embedding of $K_5$ can have cycles with $tb<-2$.
So it can have cycles where the Bennequin inequality given by $tb(\mathcal{U})+|rot(\mathcal{U})|\le -1$ (here $\mathcal{U}$ denotes an unknotted cycle) is strict.
We give examples realizing sequences $s_2$ and $s_3$.
See Figure \ref{K5examples}.
The leftmost $K_5$ in Figure \ref{K5examples}, has one $5-$cycle with $tb=-3$.
This cycle has rotation number $0$.
The middle $K_5$ in Figure \ref{K5examples}, has one $5-$cycle with  $tb=-3$.
This cycle has rotation number $\pm 2$, depending on the chosen orientation.
This middle $K_5$ is the only embedding we have found where all its cycles are unknots $U$ such that $tb(U)+|rot(U)|=-1$.
Thus the Bennequin bound is also sharp for $K_5 (\mathcal{U})$.
The rightmost  $K_5$ in Figure \ref{K5examples}, has two $5-$cycles with  $tb=-3$ (the highlighted cycle and its symmetric about the middle vertical)  and both of these cycles have rotation number 0.

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(400, 60)
\put(0,0){\includegraphics[width=6in]{K5examples}}
\end{picture}
\caption{\small Unknotted minimal embeddings of $K_5$ realizing $s_2$ (left and middle) and $s_3$ (right). The  highlighted cycles have $tb=-3$.}
\label{K5examples}
\end{center}
\end{figure}

\begin{proposition}
Let $\gamma_r$ be an unknotted $r-$cycle in $K_n$ with all $3-$cycles trivial unknots.
Then $$tb(\gamma_r)\ge c_r := \frac{2(s_r^2-1)}{3}-(r-2)s_r,$$ where $s_r=2^{\lfloor\log_2(r-2)\rfloor}$ and $\lfloor a \rfloor$ represents the largest integer not grater than $a$.
\label{bound}
\end{proposition}
\begin{proof} By hypothesis, $tb(\gamma_3)=-1$.
Also $c_3=-1=  \frac{2(s_3^2-1)}{3}-(3-2)s_3,$ since $s_3=1$.
Consider the $K_4$ subgraph determined by the four vertices in a $4-$cycle.
From our discussion in Subsection \ref{subsecK4}, we know that $tb(\gamma_4)\ge -2$.
Note $c_4=-2= \frac{2(s_4^2-1)}{3}-2s_4$.

Consider a $5-$cycle, $\gamma_5$.
Think of  $\gamma_5$ as obtained by  adding a vertex along an edge of a $4-$cycle of a $K_4$ subgraph.
The cycles containing this edge gain one unit in length.
We get a subdivision of $K_4$ where the identity
$TB_3(K_4)= TB_4(K_4)$ gives  $$tb(\gamma_4) +tb(\gamma'_4)+tb(\gamma_3) + tb(\gamma'_3)= tb(\gamma''_4) +tb(\gamma_5)+tb(\gamma'_5). $$
Here $\gamma_i$, $\gamma'_i$ and $\gamma''_i$ are $i-$cycles.
We want to minimize $tb(\gamma_5)$.
Since $c_3=-1$ and $c_4=-2$, the lefthand side of the equality is at least $-6$.
The righthand side of the equality is at most $tb(\gamma_5)-2$, when $tb(\gamma''_4)=tb(\gamma'_5)=-1$.
We have $-6 \le tb(\gamma_5)-2$, and so $tb(\gamma_5) \ge -4$.

We do the same for a $6-$cycle, $\gamma_6$.
Think of  $\gamma_6$ as obtained by adding two vertices  along edges of a $4-$cycle of $K_4$.
These two vertices can be added (1) on the same edge, (2) on two adjacent edges or (3) on two non-adjacent edges.
In each case, we get a subdivision of $K_4$ where we use the identity $TB_3(K_4)= TB_4(K_4)$.
On the righthand side of the equality we have the $6-$cycle $\gamma_6$ and two other cycles.
Since we want to find a lower bound for $tb(\gamma_6)$, we assume that $tb=-1$ for the other two cycles.
Then the righthand side of the identity is at most $tb(\gamma_6)-2$.
For each of the three cases the identity $TB_3(K_4)= TB_4(K_4)$ gives:
\begin{enumerate}
\item $tb(\gamma_3) +tb(\gamma'_3)+tb(\gamma_5) + tb(\gamma'_5) \le tb(\gamma_6) -2 $\vspace{1mm}
\item $tb(\gamma_3) +tb(\gamma_4)+tb(\gamma'_4) + tb(\gamma_5) \le tb(\gamma_6) -2 $\vspace{1mm}
\item $tb(\gamma_4) +tb(\gamma'_4)+tb(\gamma''_4) + tb(\gamma'''_4) \le tb(\gamma_6) -2 $
\end{enumerate}
Here the $\gamma_i$s represent $i-$cycles.
Since we added two vertices to various edges of $K_4$, and each edge of $K_4$ appears in two $3-$cycles,  the total length of the four cycles on the lefthand side of the identity is $4\cdot 3 + 2\cdot 2 =16$.
Using the lower bounds for the $tb$s of $3-$cycles ($c_3=-1$), $4-$cycles ($c_4=-2$) and $5-$cycles ($c_5=-4$) we get
\begin{enumerate}
\item $-1-1-4-4 \le tb(\gamma_6) -2 \Rightarrow tb(\gamma_6)\ge -8$\vspace{1mm}
\item $-1-2-2-4 \le tb(\gamma_6) -2 \Rightarrow tb(\gamma_6)\ge -7$\vspace{1mm}
\item $-2-2-2-2 \le tb(\gamma_6) -2 \Rightarrow tb(\gamma_6)\ge -6$
\end{enumerate}
So $tb(\gamma_6) \ge -6$, and one can check that $c_6=-6$.

We proceed in the same way in the general case.
Think of a $k-$cycle $\gamma_k$ as obtained by adding $k-4$ vertices to the edges of a $4-$cycle of $K_4$.
There are many possible choices, and in each case we get a subdivision of $K_4$ where we use the identity $TB_3(K_4)= TB_4(K_4)$.
On the righthand side of the equality we always have the $k-$cycle $\gamma_k$ and two other cycles which we assume have $tb=-1$.
Then the righthand side of the identity is at most $tb(\gamma_k)-2$.
Since we added $k-4$ vertices to various edges of $K_4$, the total length of the four cycles on the lefthand side of the identity is $4\cdot 3 + 2(k-4) =2k+4$.

The lefthand side of the identity can take on various forms
$$S_{n_1, n_2, n_3, n_4}= tb(\gamma_{n_1}) +tb(\gamma_{n_2})+tb(\gamma_{n_3})+ tb(\gamma_{n_4}),$$ with  $n_1+n_2+n_3+n_4 =2k+4, n_i\ge 3$.
As in the $r=6$ case above, each choice provides a lower bound for $tb(\gamma_k)$.  \\

\noindent{\bf For $k$ even:}  Let $k=2k_1$.
One lower bound for $tb(\gamma_k)$ is given by $n_1 =n_2=n_3=n_4 =k_1+1$.
 We obtain this configuration by placing $k_1-2$ vertices each, on two non-adjacent edges of the $4-$cycle.
 Then $tb(\gamma_k)\ge 2 +4 tb(\gamma_{k_1+1})$.
 We use mathematical induction to prove that $tb(\gamma_k)\ge \frac{2(s_k^2-1)}{3}-(k-2)s_k.$
 Assume
 $$ tb(\gamma_{k_1+1})\ge  \frac{2(s_{k_1+1}^2-1)}{3}-(k_1-1)s_{k_1+1}. $$
 Then
 $$tb(\gamma_k))\ge 2 +4 tb(\gamma_{k_1+1})\ge 2+\frac{8}{3} (s_{k_1+1}^2-1)-4(k_1-1)s_{k_1+1}.$$
  We show this last quantity is  equal to $\frac{2}{3}(s_k^2-1)-(k-2)s_k.$
We have
\[
\begin{array}{cl}
\frac{2}{3}(s_k^2-1)-(k-2)s_k & = \frac{2}{3} (2^{2\lfloor\log_2(2k_1-2)\rfloor}-1)-(2k_1-2)2^{\lfloor\log_2(2k_1-2)\rfloor}  \\\\
  & = \frac{2}{3} (2^{2+2\lfloor\log_2(k_1-1)\rfloor}-1)-2(k_1-1)2^{1+\lfloor\log_2(k_1-1)\rfloor} \\\\
  & =\frac{8}{3} 2^{2\lfloor\log_2(k_1-1)\rfloor}-\frac{2}{3}-4(k_1-1)2^{\lfloor\log_2(k_1-1)\rfloor} \\\\
    & =\frac{8}{3} s_{k_1+1}^2-\frac{2}{3}-4(k_1-1)s_{k_1+1} \\\\
  & = 2+\frac{8}{3} (s_{k_1+1}^2-1)-4(k_1-1)s_{k_1+1}.
\end{array}
\]
Thus
$$tb(\gamma_k))\ge  \frac{2}{3}(s_k^2-1)-(k-2)s_k.$$

\noindent{\bf For $k$ odd:}  Let $k=2k_1+1$.
One lower bound $tb(\gamma_k)$ is given by  $n_1 =n_2 =k_1+1$ and $n_3=n_4 =k_1+2$.
We obtain this configuration by placing vertices on a pair of non-adjacent edges of the $4-$cycle, $k_1-2$ vertices on one edges and $k_1-1$ vertices on the other edge.
Then $tb(\gamma_k)\ge 2 +2 tb(\gamma_{k_1+1})+ 2 tb(\gamma_{k_1+2})$.
Assume $$ tb(\gamma_{k_1+1})\ge  \frac{2(s_{k_1+1}^2-1)}{3}-(k_1+1-2)s_{k_1+1} \textrm{ and } $$
$$ tb(\gamma_{k_1+2})\ge  \frac{2(s_{k_1+2}^2-1)}{3}-(k_1+2-2)s_{k_1+2}.$$
Then $$tb(\gamma_k))\ge 2 +\frac{4(s_{k_1+1}^2-1)}{3}-2(k_1-1)s_{k_1+1}+ \frac{4(s_{k_1+2}^2-1)}{3}-2k_1s_{k_1+2}.$$
We show this last quantity is equal to  $$\frac{2}{3}(s_k^2-1)-(k-2)s_k.$$
\begin{itemize}
  \item  For $k_1=2^t$, $\lfloor\log_2(k_1-1)\rfloor =t-1$ and $\lfloor\log_2(2k_1-1)\rfloor = t$.
  So we have $s_{k_1+1}=2^{t-1}$, $s_{k_1+2}=2^t$ and $s_{k}=2^t$.
  One can check that the two quantities are both equal to $-\frac{2}{3}+2^t-\frac{4}{3}2^{2t}$. \\
  \item  For $2^t <k_1<2^{t+1}$ we have $2^{t+1}-1 <2k_1-1<2^{t+2}-1$.
    Then  $\lfloor\log_2k_1\rfloor=t$, $\lfloor\log_2(k_1-1)]\rfloor=t$ and $\lfloor\log_2(2k_1-1)\rfloor = t+1$.
    So $s_{k_1+1}=2^t$, $s_{k_1+2}=2^t$ and $s_{k}=2^{t+1}$.
    One can check that the two quantities are both equal to $-\frac{2}{3}+\frac{8}{3}2^{2t}- (4k_1-2)2^{t}$. \\
    \end{itemize}

\end{proof}

\section{The graph Thurston-Bennequin number for complete bipartite graphs}\label{GTBB}

This section is concerned with the $TB$ of complete bipartite graphs $K_{n,m}$.
For such a graph, denote by $P$ and $Q$ the subsets of vertices in the $n-$partition and $m-$partition, respectively.
Let  $w_{ae[P]}(K_{n,m})$ denote the total signed sum of crossings over all pairs of edges adjacent to a vertex in $P$.
Let  $c_{v[P]}(K_{n,m})$ denote the total number of cusps at vertices in $P$, taken over all pairs of adjacent edges.

\begin{theorem} Let $K_{n,m}$ be a Legendrian embedding of a complete bipartite graph in $(\mathbb{R}^3, \xi_{std})$, with $n\ge m\ge 3$.
Then $TB_{2r}(K_{n, m})$ is a multiple of $TB_4(K_{n, m})$.
As a consequence, $TB(K_{n, m})$ is a multiple of $TB_4(K_{n, m})$.
The quantities $TB_i(K_{n,m})$, $4\le i\le m$, can be computed from writhe and cusp counts of vertices and edges in the front projection rather than summing the $tbs$ of the cycles.
\label{Knm}
\end{theorem}

\begin{proof}
We consider the writhe and number of cusps in a Legendrian front projection for $K_{n, m}$.
For the writhe, we consider crossings of an edge with itself, crossings between adjacent edges and crossings between non-adjacent edges.
To compute the number of cusps, we look at cusps along each edge and at cusps occurring at the vertices (between a pair of adjacent edges).

\begin{enumerate}
\item Each edge appears in $(n-1)(m-1)$ cycles of length 4 and  in $\frac{(n-1)!(m-1)!}{(n-r)!(m-r)!}$ cycles of length $2r$.
\item Each pair of adjacent edges appears in $(n-1)$ cycles of length 4 if the two edges are adjacent at a vertex in $P$ (the $n-$partition).
 Each pair of adjacent edges appears in $(m-1)$ cycles of length 4 if the two edges are adjacent at a vertex in $Q$ (the $m-$partition).
 Each pair of adjacent edges appears in $\frac{(m-2)!(n-1)!}{(m-r)!(n-r)!}$ cycles of length $2r$ if the two edges are adjacent at a vertex in $P$.
 Each pair of adjacent edges appears in$\frac{(m-1)!(n-2)!}{(m-r)!(n-r)!}$ cycles of length $2r$ if the two edges are adjacent at a vertex in $Q$.

 \item Each pair of non-adjacent edges appears in one cycle of length 4 and in \\$(2r-3)\frac{(m-2)!(n-2)!}{(m-r)!(n-r)!}$ cycles of length $2r$.
 We  obtain this count as follows:
 The $r-2$ vertices in each partition that are in the cycle and not in one of the two non-adjacent edges can be chosen in ${n-2 \choose r-2}{m-2 \choose r-2} $ ways.
 Without loss of generality choose one of the edges of interest to start constructing the cycle.
 There are $2r-3$ positions where the second edge of interest can be placed in a $2r-$cycle, since it cannot be adjacent.
 See the first row of in Figure \ref{Non-adjacent-edges}.
 Each of the $r-2$ vertices in each partition can occupy $r-2$ remaining positions relative to the chosen two non-adjacent edges.
 There are $(r-2)!(r-2)!$ ways to place these remaining vertices.

 Fix an arbitrary embedding of $K_{n,m}$.
 In $(r-1)\frac{(m-2)!(n-2)!}{(m-r)!(n-r)!}$ of these cycles, the non-adjacent edges intersect with one orientation, the same orientation as their intersection in the $4-$cycle.
 In the other  $(r-2)\frac{(m-2)!(n-2)!}{(m-r)!(n-r)!}$ cycles, they intersect with the opposite orientation.
 See the second row of Figure \ref{Non-adjacent-edges}.
 This means that the contribution of the two edges to the writhe comes from $\frac{(m-2)!(n-2)!}{(m-r)!(n-r)!}$ of the $2r-$cycles.
 For each of these cycles, the contribution is the same as the one from the $4-$cycle containing the two non-adjacent edges.

 \begin{figure}[htpb!]
\begin{center}
\begin{picture}(360, 80)
\put(0,0){\includegraphics[width=5.5in]{Non-adjacent-edges}}
\end{picture}
\caption{\small Placement of two non-adjacent edges in a  $2r-$cycle.}
\label{Non-adjacent-edges}
\end{center}
\end{figure}

\end{enumerate}

Items (1)--(3) above give

$$TB_{2r}(K_{n,m})=TB_4(K_{n,m}) \cdot \frac{(m-2)!(n-2)!}{(m-r)!(n-r)!} .$$

Adding over all cycles gives
$$TB(K_{n,m})=   TB_4(K_{n,m})\cdot \ \sum_{r=2}^{m} \frac{(m-2)!(n-2)!}{(m-r)!(n-r)!} . $$
We can also compute $TB_4(K_{n,m})$ from the writhe and cusp count for edges and vertices as follows:\\\\
$TB_4(K_{n,m})=$
\[
\begin{array}{cl}
  & (n-1)(m-1)w_e(K_{n,m})+(n-1)w_{ae[P]}(K_{n,m})+(m-1)w_{ae[Q]}(K_{n,m})+w_{ne}(K_{n,m}) \\\\
  & -\frac{1}{2}[(n-1)(m-1)c_e(K_{n,m})+(n-1)c_{v[P]}(K_{n,m})+(m-1)c_{v[Q]}(K_{n,m})].
\end{array}
\]

\end{proof}

Here we describe a way to realize a minimal embedding of $K_{n,m}$.
See Figure \ref{fig-Knm}.
Place all vertices of $K_{n,m}$ on the same horizontal line in the front projection, with the vertices in one partition first.
Then place the edges adjacent to a given vertex as nested arcs, with no intersections between adjacent edges.
See the left image of Figure \ref{fig-Knm} for such an embedding of $K_{5,3}.$
All $4-$cycles in this embedding have a front projection like that of the unknot on the right in the picture and therefore are trivial unknots.

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(720, 90)
\put(0,0){\includegraphics[width=6.3in]{Knm-minimal}}
\end{picture}
\caption{\small Minimal embedding of $K_{5,3}$ and a $4-$cycle in this embedding.}
\label{fig-Knm}
\end{center}
\end{figure}

\begin{proposition}
For an unknotted minimal Legendrian $K_{3,3}$, three of its cycles of length six have $tb=-2$ and the other three have $tb=-1$.
Additionally, any pair of $6-$cycles with the same $tb$ share three non-adjacent edges, and any pair of $6-$cycles with different $tbs$ share two sets of adjacent edges.
\end{proposition}
\label{prop_K33}
\begin{proof} For $n=m=3$ and $r=3$, Theorem \ref{Knm} says
$$TB_{6}(K_{3,3})= TB_4(K_{3,3}).$$
The graph $K_{3,3}$ has nine cycles of length 4 and six cycles of length 6. If all nine $4-$cycles are of maximal $tb=-1$, then the sum of $tb$s over all six cycles is $-9$.
So there are at most three $6-$cycles with $tb=-2$.
In the following we use our understanding of embeddings of $K_4$ to show that there are three $6-$cycles with $tb=-2$.
If we delete one of the edges of $K_{3,3}$, we obtain a subdivision of $K_4$, call it $K$.
We will describe $K$ as a $K_4$ graph and ignore the valence 2 vertices, to simplify the explanation.
 The $3-$cycles of $K$ are $4-$cycles of $K_{3,3}$.
 See Figure \ref{K33sub4cyc}.

 \begin{figure}[htpb!]
\begin{center}
\begin{picture}(280, 110)
\put(0,0){\includegraphics[width=3.5in]{K33sub4cyc}}
\end{picture}
\caption{\small The $3-$cycles of the $K_4$ subdivision correspond to $4-$cycles of $K_{3,3}$.}
\label{K33sub4cyc}
\end{center}
\end{figure}

\noindent One $4-$cycle of $K$ is a $4-$cycle of $K_{3,3}$, while the other two $4-$cycles of $K$ are $6-$cycles of $K_{3,3}$.
See Figure \ref{K33sub6cyc}.

 \begin{figure}[htpb!]
\begin{center}
\begin{picture}(300, 70)
\put(0,0){\includegraphics[width=4.5in]{K33sub6cyc}}
\end{picture}
\caption{\small The $4-$cycles of the $K_4$ subdivision correspond to a $4-$cycle of $K_{3,3}$ (left) and two $6-$cycles of $K_{3,3}$ (middle, right).}
\label{K33sub6cyc}
\end{center}
\end{figure}

By assumption, all $4-$cycles of $K_{3,3}$ have maximal $tb=-1$, so all $3-$cycles of  $K$ have maximal $tb=-1$.
This means exactly one of the $4-$cycles of $K$ has $tb=-2$, with the other cycles having $tb=-1$.
The $4-$cycles of $K$ are coming from a $4-$cycle of $K_{3,3}$ and two $6-$cycles of $K_{3,3}$.
Since all $4-$cycles of $K_{3,3}$ have maximal $tb=-1$, one of the two $6-$cycles must have $tb=-2$ and the other must have $tb=-1$.

All  edges of $K_{3,3}$ are equivalent up to graph automorphism.
So all  $K_4$ subdivisions obtained by deleting a single edge of $K_{3,3}$  have the same structure.
The set of three $K_4$ subdivisions shown in Figure \ref{K33subs} contain all of the $6-$cycles of $K_{3,3}$, with each cycle appearing once.
So for each subdivision there is a different $6-$cycle with $tb=-2$.
Thus there are exactly three $6-$cycles with $tb=-2$ and three $6-$cycles with $tb=-1$.

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(300, 70)
\put(0,0){\includegraphics[width=4.5in]{K33subs}}
\end{picture}
\caption{\small By deleting the three edges adjacent to a vertex we see the six $6-$cycles of $K_{3,3}$ as $4-$cycles in the subdivision of $K_4$.}
\label{K33subs}
\end{center}
\end{figure}

Since all of the $K_4$ subdivisions obtained by deleting a single edge of $K_{3,3}$  have the same structure, any pair of $6-$cycles with different $tbs$ will have the same structure as those in Figure \ref{K33sub6cyc}.
Thus, any two $6-$cycles with different $tbs$ will share two pairs of adjacent edges.
Let $\gamma_6$ be an arbitrary $6-$cycle in an embedding of $K_{3,3}$.
Consider the set of three $6-$cycles that share two pairs of adjacent edges with $\gamma_6$.
See Figure \ref{K33proof}.
The cycles in this set will all have the same $tbs$.
Any pair of these $6-$cycles with same $tbs$ share three non-adjacent edges.

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(450, 80)
\put(0,0){\includegraphics[width=6in]{K33proof}}
\end{picture}
\caption{\small The 6-cycle on the left shares two pairs of adjacent edges with each of three 6-cycles on the right. }
\label{K33proof}
\end{center}
\end{figure}

\end{proof}

From Proposition \ref{prop_K33}, we understand the structure of an unknotted minimal embedding of $K_{3,3}$ well.
Up to relabelling the cycles, this gives one possible $tb(K_{3,3})$ for an unknotted minimal embedding.
Since unknots with $tb=-2$ and $tb=-1$ are unique, there is a unique $tb$ and $|rot|$ for an unknotted minimal embedding of $K_{3,3}$.
In Figure \ref{K33examples}, we give an unknotted minimal embedding of $K_{3,3}.$
In Section \ref{questions}, we show this embedding is equivalent to the one described after Theorem \ref{Knm}.

\begin{remark}
In a $K_{3,n}$ the vertices of a $6-$cycles define a unique $K_{3,3}$ subgraph.
Thus Proposition \ref{prop_K33} implies for unknotted minimal embeddings of $K_{3,n}$, half of the $6-$cycles have $tb=-2$ and half of them have $tb=-1$.
\end{remark}

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(200, 70)
\put(0,0){\includegraphics[width=2.7in]{K33examples}}
\end{picture}
\caption{\small An unknotted minimalembedding of $K_{3,3}$.}
\label{K33examples}
\end{center}
\end{figure}

Here we take a moment to consider complete bipartite graphs $K_{n,m}$, with $n\ge m$ and $m<3.$
There are no cycles in the complete bipartite graphs $K_{n,1},$ so they are of little interest.
The complete bipartite graphs with $m=2$, i.e. $K_{n,2}$ are subdivisions of the $\theta_n-$graphs.
For the $\theta_n-$graphs, the smallest cycles are $2-$cycles.
These are the only cycles.
So there cannot be a nice relationship between the cycles, like that seen earlier.
For completeness we give a formula for the $TB$ of a $\theta_n-$graph in terms of writhe and cusp counts of vertices and edges in the front projection.
We consider the writhe and number of cusps in a diagram for a $\theta_n-$graph, call the diagram $\theta_n$.
In a $\theta_n-$graph there are no non-adjacent edges.
Each edge appears in $(n-1)$ cycles and each pair of adjacent edges makes up one of the cycles.
This gives
$$TB(\theta_n)=(n-1)w_e(\theta_n)+w_{ae}(\theta_n)-\frac{1}{2}[(n-1)c_e(\theta_n)+c_v(\theta_n)].$$

\section{Questions and examples of embeddings}\label{questions}
In this section we consider minimal embeddings of $K_4$, $K_5$ and $K_{3,3}$.
We show the equivalence of diagrams of unknotted minimal embeddings discussed earlier.
First we will recall the Reidemeister moves for Legendrian graphs.
Two generic front projections of a Legendrian graph are related by Reidemeister moves I, II and III together with three moves given by the mutual position of vertices and edges \cite{BI}. See Figure~\ref{moves}.

\begin{figure}[htpb!]
\begin{center}
\begin{picture}(389, 170)
\put(0,0){\includegraphics[width=5.5in]{moves}}
\put(84, 153){I}
\put(82,99){II}
\put(80,33){III}
\put(256, 150){IV}
\put(328, 151){IV}
\put(295,93){V}
\put(291,30){VI}
\end{picture}
\caption{\small Legendrian isotopy moves for graphs:  Reidemeister moves I, II, and III, a vertex passing through a cusp (IV), an edge passing under or over a vertex (V), an edge adjacent to a vertex rotates to the other side of the vertex (VI). Reflections of these moves that are Legendrian front projections are also allowed.}\label{moves}
\end{center}
\end{figure}

In Figure \ref{K4examples}, we show two diagrams for the one unknotted minimal embedding of $K_4$ that is known.
In Figure \ref{K4flat}, we show four diagrams of unknotted minimal embeddings of $K_4$ without crossings.
\begin{figure}[htpb!]
\begin{center}
\includegraphics[width=3.5in]{K4flat}
\caption{\small Four unknotted minimal embeddings of $K_4$.}
\label{K4flat}
\end{center}
\end{figure}
To go between the top and bottom diagrams, in each column of Figure \ref{K4flat}, it takes two Reidemeister IV moves (the vertices are number to make it easier to see how this is done).
In Figure \ref{K4flat-flat}, we show how to go between the two diagrams in the top row of Figure \ref{K4flat}.
Thus all diagrams in Figure \ref{K4flat} are equivalent.
\begin{figure}[htpb!]
\begin{center}
\includegraphics[width=6in]{K4flat-flat}
\caption{\small A sequence of Legendrian $K_4$s related by Reidemeister moves. }
\label{K4flat-flat}
\end{center}
\end{figure}

\noindent Finally in Figure \ref{K4other-flat}, we give the more complicated sequence showing that the left diagram from Figure \ref{K4examples} is equivalent with the final diagram in Figure \ref{K4flat-flat}.
Thus the diagrams in Figure \ref{K4examples} are equivalent.

\begin{figure}[htpb!]
\begin{center}
\includegraphics[width=6in]{K4other-flat}
\caption{\small A sequence of Legendrian $K_4$s related by Reidemeister moves. }
\label{K4other-flat}
\end{center}
\end{figure}
We do not know of a different unknotted minimal embedding of $K_4$, which leads us to the following question:
\begin{question}
Is this the unique unknotted minimal embedding of $K_4$?
\end{question}

\noindent If we consider minimal embeddings rather than unknotted minimal embeddings there are a number of other possibilities.
In Figure \ref{K4-k-example}, we give an infinite family of examples.
For each $k\in\mathbb{Z}$ odd, this is a minimal embedding of $K_4$ where:
\begin{itemize}
\item one $4-$cycle is an unknot with $tb=-1$,
\item one $4-$cycle is an unknot with $tb=-k-1$ ($rot=\pm 1$), and
\item one $4-$cycle is a $(2,k)-$torus knot with $tb=k-2$ ($rot=0$).
\end{itemize}

\begin{figure}[htpb!]
\begin{center}
\includegraphics[width=3in]{K4-k-example}
\caption{\small Legendrian $K_4$ with one $4-$cycle a $(2,k)-$torus knot with $tb=k-2$. }
\label{K4-k-example}
\end{center}
\end{figure}

\begin{question}
Is there an embedding of $K_4(L)$ where $tb_{max}(L)=0$ and all cycles have maximal $tb$?
\end{question}

For $K_5,$ we have shown three different unknotted minimal embeddings, two with the sequence $s_2$ for the $tbs$ of the $5-$cycles and one with $s_3$ for the $tbs$ of the $5-$cycles.
However, based on our calculations there are many other possible minimal embeddings.
\begin{question}
Are there unknotted minimal embeddings of $K_5$ realizing the sequence $s_3$  different than the one in Figure \ref{K5examples}? (One way this could occur is if one or both $5-$cycles with $tb=-3$ had rotation number $\pm 2$.)

\end{question}

\begin{question}
Are there unknotted minimal embeddings of $K_5$ realizing any of the other sequences of $tbs$ for the $5-$cycles $(s_1, s_4, s_5, s_6, s_7, s_8, s_9, s_{10})$?
\end{question}

\begin{conjecture}
Any unknotted minimal embedding of $K_5$ will contain at least one $5-$cycle with $tb=-3$, and will not contain a $5-$cycle with $tb=-4$.
\end{conjecture}
\noindent Building on our example of minimal embeddings for $K_4$ in Figure \ref{K4-k-example}, there are also infinitely many different possible minimal embeddings of $K_5$.

In Figure \ref{K33g-g}, we show that the $K_{3,3}$ embedding described after Theorem \ref{Knm} is the same as that shown in Figure \ref{K33examples}.
For the graph $K_{3,3}$, having an embedding with all its smallest cycles trivial unknots seems to be a more rigid constraint than it is for complete graphs.
We have not found any other unknotted minimal embeddings or minimal embedding of $K_{3,3}$.
\begin{figure}[htpb!]
\begin{center}
\includegraphics[width=6in]{K33g-g}
\caption{\small A sequence of Legendrian $K_{3,3}$s related by Reidemeister moves and planar isotopy. }
\label{K33g-g}
\end{center}
\end{figure}

\begin{question}
Is the embedding shown in Figure \ref{K33examples} the unique unknotted minimal embedding of $K_{3,3}$?
\end{question}

\begin{question}
Is the embedding shown in Figure \ref{K33examples} the unique minimal embedding of $K_{3,3}$?
\end{question}

\bibliographystyle{amsplain}

redpajama_set_name: RedPajamaArXiv


text:
include $(RTE_SDK)/mk/rte.vars.mk

#
# library name
#
LIB = librte_pmd_qede.a

CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)

EXPORT_MAP := rte_pmd_qede_version.map

LIBABIVER := 1

#
# OS
#
OS_TYPE := $(shell uname -s)

#
# CFLAGS
#
CFLAGS_BASE_DRIVER = -Wno-unused-parameter
CFLAGS_BASE_DRIVER += -Wno-sign-compare
CFLAGS_BASE_DRIVER += -Wno-missing-prototypes
CFLAGS_BASE_DRIVER += -Wno-cast-qual
CFLAGS_BASE_DRIVER += -Wno-unused-function
CFLAGS_BASE_DRIVER += -Wno-unused-variable
CFLAGS_BASE_DRIVER += -Wno-strict-aliasing
CFLAGS_BASE_DRIVER += -Wno-missing-prototypes

ifneq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
CFLAGS_BASE_DRIVER += -Wno-unused-value
CFLAGS_BASE_DRIVER += -Wno-format-nonliteral
ifeq ($(OS_TYPE),Linux)
ifeq ($(shell clang -Wno-shift-negative-value -Werror -E - < /dev/null > /dev/null 2>&1; echo $$?),0)
CFLAGS_BASE_DRIVER += -Wno-shift-negative-value
endif
endif
endif

ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable
endif
CFLAGS_BASE_DRIVER += -Wno-missing-declarations
ifeq ($(shell test $(GCC_VERSION) -ge 46 && echo 1), 1)
CFLAGS_BASE_DRIVER += -Wno-maybe-uninitialized
endif
CFLAGS_BASE_DRIVER += -Wno-strict-prototypes
ifeq ($(shell test $(GCC_VERSION) -ge 60 && echo 1), 1)
CFLAGS_BASE_DRIVER += -Wno-shift-negative-value
endif
else ifeq ($(CONFIG_RTE_TOOLCHAIN_CLANG),y)
CFLAGS_BASE_DRIVER += -Wno-format-extra-args
CFLAGS_BASE_DRIVER += -Wno-visibility
CFLAGS_BASE_DRIVER += -Wno-empty-body
CFLAGS_BASE_DRIVER += -Wno-invalid-source-encoding
CFLAGS_BASE_DRIVER += -Wno-sometimes-uninitialized
ifeq ($(shell clang -Wno-pointer-bool-conversion -Werror -E - < /dev/null > /dev/null 2>&1; echo $$?),0)
CFLAGS_BASE_DRIVER += -Wno-pointer-bool-conversion
endif
else
CFLAGS_BASE_DRIVER += -wd188 #188: enumerated type mixed with another type
endif

#
# Add extra flags for base ecore driver files
# to disable warnings in them
#
#
BASE_DRIVER_OBJS=$(patsubst %.c,%.o,$(notdir $(wildcard $(SRCDIR)/base/*.c)))
$(foreach obj, $(BASE_DRIVER_OBJS), $(eval CFLAGS+=$(CFLAGS_BASE_DRIVER)))

#
# all source are stored in SRCS-y
#
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_dev.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_hw.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_cxt.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_l2.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_sp_commands.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_init_fw_funcs.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_spq.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_init_ops.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_mcp.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_int.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_dcbx.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/bcm_osal.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_sriov.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += base/ecore_vf.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += qede_ethdev.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += qede_eth_if.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += qede_main.c
SRCS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += qede_rxtx.c

# dependent libs:
DEPDIRS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += lib/librte_eal lib/librte_ether
DEPDIRS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += lib/librte_mempool lib/librte_mbuf
DEPDIRS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += lib/librte_net

include $(RTE_SDK)/mk/rte.lib.mk

redpajama_set_name: RedPajamaGithub


text:
Elizabeth Coppin
Magdalene survivor takes case to UN torture committee
Kitty Holland
A Magdalene survivor, who says she has been denied justice by the State for over 20 years, is taking her case to the United Nations. The UN Committe(...)
Magdalene survivor's UN case of key importance, lawyer says
A case before the United Nations, in which a Magdalene survivor alleges she is being denied justice by the Irish State, could have far-reaching implic(...)
Magdalene survivor: 'It feels like Ireland is abusing us again'
Elizabeth Coppin (70) feels "very bitter" towards the Catholic Church but "much worse towards the Irish State". "They failed to protect me and thousa(...)
A history of Ireland in 100 great quotes
Think we've missed any important quotes? Let us know by submitting your suggestions here and we will publish a selection of the best 1(...)

redpajama_set_name: RedPajamaCommonCrawl


NBA 2K19 captures the essence of basketball perfectly. Going up for a thunderous slam dunk fires me up, draining that last second three to win a big game exhilarates and winning a hard-earned NBA championship feels like an accomplishment. The problem with NBA 2K19 lies everywhere else, the game constantly trying to take more money out of my pocket via the in-game currency. Playing NBA 2K19 impresses me big time, but the insidious undertones really dishearten me.
This game presents the game of basketball effortlessly, every nuance feeling as authentic as watching the games on TV. AI players react to my actions in real time, moving with the ball handler naturally while those away from the play point and call out. Controlling my players feels tight and precise, notably, the shooting mechanic where I have to hold the button in until the right moment for a clean shot.
Most impressive are the player's models, which look like they've ripped the player from real life and stuck him on the virtual court. Being a Sixers fan I spent a lot of time with this year's crew, and while every player looks great Joel Embiid, in particular, looks exactly like his real-life counterpart. Apparently, NBA 2K19's games are played in the uncanny valley, because these character renders looks awesome.
I will say that applies mostly to current players though, as the legendary players' character models don't quite match up. This makes sense of course, as 2K Sports can't exactly travel through time and scan the players during their prime. However, I did notice a slight drop in quality when playing with classic teams. Pick one of the "all-time" teams that mixes old and current players and you'll see what I mean: Julius Erving's model, while impressive, just doesn't look as good as Embiid or Ben Simmons.
The presentation of each game is also very cool, from the pre-game show starring the actual TNT pre-game team to the excellent commentary during a game. In fact, this game may sport the best commentary I've ever heard in a sports game, addressing specific players on the court completely naturally. The addition of longtime sportswriter Bill Simmons is cool, but strangely I only heard from him during games with the Boston Celtics. Just a coincidence, I'm sure.
NBA 2K19 offers plenty of ways to ball but this is where the Virtual Currency (VC) issue begins to creep in. MyGM and MyLeague are the smallest offenders, mainly because these modes are delightful without needing any in-game currency. MyGM offers a full story mode where I can run a brand new team, or pick up and play as any team in the league. I prefer the story mode, as I feel far more satisfaction starting from the bottom and winning a title, but both formats are fun to mess around with.
I do want to point out one thing: starting an expansion team means I can build a team from scratch, including with uploaded logos and an original name. The Community Uploads feature easily makes this 1000x more enjoyable, though I have two questions. One, will 2K do something about copyrighted material? There's a few things on there that I expect would draw the ire of the companies that own the assets. Two, and more importantly, why do so many uploads involve the female posterior? Is that a dream of some fans to have a logo that's a lady's backside? Strange, strange stuff.
MyLeague may be my favorite mode in the whole game, giving me the power to shape not only the current NBA but the history of the sport itself. When creating a league I now have access to the draft classes from as far back as 1960, letting me re-draft legends like Oscar Robertson and "The Logo" Jerry West. The National Basketball Association becomes the Fanelli Basketball Association, my every whim allowed simply with a few button presses, and that level of creativity will go a long way.
Unfortunately, that goodwill is rescinded when it comes to MyCareer, as building my player from scratch becomes less about developing skills and more about purchasing them. When I think of the ideal "create-a-player" mode I want it to be as close to an RPG as a sports game gets. I play with my character on the court, after the game I get a rating and experience, and level ups give me skill points to add to my player's attributes. The more I level up and the higher my skills become, the better chance I have succeeding in the NBA.
2K19 does this to a point, but the "experience points" are instead "virtual currency" and "leveling up" is "having enough in-game money to buy the stat boost." This means the mode encourages emptying my wallet for VC in order to create a superstar instead of building him from the ground up. I can still go the old-fashioned route, VC purchases are of course optional, but I won't be challenging Lebron James for months at this rate.
I do not like being pushed toward spending more money than the point of entry, and I imagine the average consumer won't like it either. Granted this was a review copy that I did not have to purchase, but the sting of "wow, this game really wants me to buy VC" remained. Some players may be fine with the occasional VC purchase, and power to them for it, but the whole thing leaves a sour taste in my mouth.
When actually playing basketball NBA 2K19 shines, the action on and around the court feeling as authentic as a video game can achieve. The ebb and flow of the game comes through masterfully whether in exhibition or in a deep playoff run. The ancillary parts of the game have their moments of greatness too, but those can be overshadowed by the constant shaking of the virtual tip jar. I enjoyed the heck out of NBA 2K19, don't get me wrong, but man do I wish the letters "VC" weren't as heavily involved.


text:
Visual Information-Seeking Mantra
bigdata-unlimited January 24, 2019, 7:11pm #1
This question is related to the guideline: Overview first, zoom and filter, details on demand
Source: B Shneiderman, The Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations. Proc. IEEE Symposium on Visual Languages, pp.336-343, 1996. http://citeseer.ist.psu.edu/409647.html
When working with domain scientists in CFD, we have very high-resolution data to be visualized. Domain scientists seem to prefer details first. I am wondering what was the reason. Someone told me that some biologists have the same preference in dealing with large datasets.
lizmarai January 29, 2019, 1:09am #2
Correct, CFD domain scientists, some biologists, journalists, and no doubt other domain scientists operate under a Details-first model (not Overview-first). The rationale is more complex than we'd think (it's not necessarily the large size of the dataset), and may vary with the domain.
The first factor is the imprecise definition of "details": in some applications, the details are ill-defined and need repeated refinement. To the point, in CFD the details are spatial features of interest. Per Luciani et al. 2019 (http://ieeexplore.ieee.org/abstract/document/8440850), a number of these features do not have concrete/mathematical definitions, and as such typically require a skilled user in order to be visually identified, separated, and investigated: ```[the feature is] hard to define, but if you see it, you recognize it immediately''; conversely, "it becomes difficult to draw conclusions from an overview first, when they ``do not know exactly what is present in the data''`. Since a CFD specialist needs to first identify the details/features, that's what their visual analysis tends to start with.
A second factor is the domain expert's familiarity with the "overview". Chen et al. ("Information Theory Tools for Visualization", AK Peters) were the first to remark, in 2016, that in "many scenarios, we often observe that an experienced viewer may find [overview first and details on demand] frustrating, as the viewer knows exactly where the interesting part of a detailed representation is." In CFD, domain scientists often work on the same problem for months, and have a good mental overview of the underlying data.
A third factor is the potentially large size of the overview, as first argued by van Ham and Perer in 2009 (http://ieeexplore.ieee.org/abstract/document/5290699) and then by Luciani et al. in 2019; creating an overview may not be feasible, in particular when a large dataset is being maintained at a centralized location, and transferring it to multiple client machines is not an option.
In a nutshell, Overview-first is not the only mantra we can and should use in visualization design. Alternative mantras are Search-first (van Ham and Perer, see above) and Details-first (Luciani et al., see above), and quite possibly many others. Overall, adoption of a particular design mantra should take into account the benefits, limitations, and possible co-existence of each approach, with careful consideration of data, user knowledge and interests, and user workflows.
In terms of what may be happening outside CFD, some biologists are also first and foremost interested in specific details, such as a specific bonding site (see Fig.2 in Chapman et al. "Initial genome sequencing and analysis of multiple myeloma"). In the "Data-driven Storytelling" book edited by Riche et al. 2018, AK Peters, one journalist also describes their approach to design as "Details-first". From a wider perspective, "the Details-first model applies to domain expert workflows that start with an in-depth exploration of one model or simulation, then seek to extrapolate or generalize the findings to a collection of models. In such workflows, users may wish to start with the features of interest, in particular when those features are ill-defined and need repeated refinement" (Luciani et al, 2019).
Hope this helps. (I tried to provide links to all the refs above, but visguides only allows two links per post).
bigdata-unlimited February 21, 2019, 1:23pm #3
Thank you, Lizmarai, for your answer that is really thorough. I learned a lot. The decision as to using which of the three approaches, overview first, detail first and search first, seems to relate largely to the users' knowledge. It sounds like:
If a user knows a lot, detail first,
If a user knows some, search first,
If a user knows little, overview first.
lizmarai January 2, 2020, 10:04pm #4
Sorry for the delayed reply, I meant to answer for a while.
I think your extended interpretation makes sense in some settings, but may not be a good fit for other settings.
My understanding is that all the three mantras documented so far (the "overview first" mantra, the "search-first" mantra, and the "details-first" mantra) can apply to situations where "the user knows little", and also to situations where "the user knows a lot".
For example, journalists would argue that casual readers ("the user knows little") are drawn to stories that start with the details-first. As another example, Google Maps would argue that a casual maps user ("the user knows little") would start with their current location, whence search-first. As another example, neither an expert astronomer nor a novice citizen scientist (e.g., a school teacher) would be necessarily interested in an overview of the known universe, despite the fact that one knows a lot, and one knows little. I think a better framing is "What is the intended user activity?", instead of "What does the user know?".
From a more formal perspective, I think the "user knowledge" interpretation is aligned with the Human-Centered-Design paradigm (the user is central). In contrast, the mantras are better aligned with the Activity-Centered-Design paradigm (the user activity is central). Don Norman has a nice exposition of ACD (which he fully endorses, over HCD) in the third edition of "The Design of Everyday Things", Chapter 6. Hope this helps!
Legal notice / Impressum Privacy Policy


Abstract: Hydrate reservoirs generally have some unique characteristics such as hydrate dissociation and reformation, permeability change, which may result in quite different pressure-transient behavior from that in conventional reservoirs. In this work, we develop the pressure-transient analysis method for Class III hydrate reservoirs. By establishing a 2D cylindrical model, we then conduct a pressure buildup test and five flow regimes are identified according to the exhibited characteristics observed from the pressure-transient curves. Furthermore, sensitivity analysis is conducted to study the effects of initial reservoir pressure, initial reservoir temperature, permeability reduction exponent, BHP (bottom-hole pressure), and production time on pressure-transient behavior. We identify five flow regimes on the pressure-transient curves. Due to the dissociation of gas hydrate, the first regime is dominated by the non-uniform distribution of permeability, and the pressure derivative curve exhibits an upward straight line. We identify a "V-shaped" valley in the second regime with a peak in the third regime, which suggests the occurrence of hydrate reformation near the wellbore. Such characteristics exhibited in the three regimes are unique to hydrate reservoirs. In addition, the methodology proposed in this study is successfully applied to analyze the actual well testing data obtained from the Malik hydrate reservoir in Canada.


text:
Friday News & Notes Presented by Zoetis
← Instagram Roundup: Sand Dancing at Carolina International
Two-Time 5* Winner Parklane Hawk Passes Away At 22 →
By Kate Samuels on Mar 25, 2022 12:03 am - 1,129 views
Liz Halliday-Sharp and Fernhill By Night in the CCI4*-S. Brant Gamma Photography Photo.
As Carolina International takes place this weekend, Liz Halliday-Sharp has announced the official retirement of her longtime partner, Fernhill By Night, or Blackie. She wrote a touching tribute on her Instagram this week:
"As the Carolina International is happening this week, I felt that it was fitting to announce the official retirement of one of its previous winners, Fernhill By Night, from competition ❤ "Blackie" has been my long term friend and partner for 10 years and we have been through so much in our time together. We have enjoyed multiple FEI wins and placings through 4* level, took on our first CCI5* together, and also competed at Prix St George level in dressage. Last year, Blackie finished second at Carolina in the 4* in what would be the last big competitive appearance of his career. At 19 years old Blackie and I have had an amazing journey together and he owes me absolutely nothing. He is enjoying being spoiled at the farms, going on hacks and spending time in the field with his miniature friend, Bubbles. A thank you to Blackie for all that he has has taught me and for being my friend for all of these years – he will remain a special part of our family until the end of his days ❤❤
U.S. Weekend Preview
Carolina International CCI & H.T. (Raeford, Nc.): [Website] [Entry Status] [Ride Times] [Live Scores] [Live Stream] [Volunteer]
Full Gallop Farm March II H.T. (Aiken, Sc.): [Website] [Entry Status] [Volunteer]
March H.T. at Majestic Oaks (Reddick, Fl.): [Website] [Entry Status] [Ride Times] [Volunteer]
Texas Rose Horse Park H.T. (Tyler, Tx.): [Website] [Entry Status] [Ride Times] [Volunteer]
News From Around the Globe:
Jeanie Clarke describes herself as a life-long horsewoman and an educator. An accredited instructor with the USEA Instructors' Certification Program (ICP) and Advanced level eventer, Clarke's program has produced five-star riders, "A" level pony clubbers, top grooms and barn managers, and so much more. While Clarke's focus has been on educating others, she has also pursued continuous education for herself, an effort that the funds from the Broussard Charitable Foundation Going Forward Grant helped make possible."It feels meaningful to have received the Going Forward Grant because, like the best of the sport of eventing, this is a team effort," Clarke shared with the USEA. "I want to contribute to the future of the sport in a meaningful way. Earlier in my career, I did this through teaching, developing good riders and good horses, fostering a sense of responsibility to the sport amongst my students and owners, and volunteering as much as possible. Now, with more experience and expertise to offer, I also want to design courses that will support the future and the quality of eventing. Good courses should give horses and riders positive educational experiences at the lower levels. At the upper levels they should foster great competition." [Jeanie Clark is Enriching Eventing]
If you love a sparkling-clean horse as much as I do, you might be tempted to bathe your horse frequently, even when you're not showing. This can be beneficial: Dried sweat can lead to skin irritations, and really dirty, dusty horses tend to rub their manes and tails, breaking off hairs. But washing your horse too frequently or with caustic products can lead to dry skin and even cause hairs to fall out. During the hottest, stickiest part of the summer, it's OK to rinse your horse off daily, but try to limit shampooing to just a few times per month, if possible. [Banish Mud Season with Bathing Secrets]
Shopping for a Multi-Directional Impact Protection System helmet this year? With more and more helmet companies incorporating this exciting technology into their product line, you now have lots of choices. Luckily, we found the ultimate guide. [Your Guide to MIPS Helmets]
When Mary Sawyer, 76, first decided she wanted to complete a "century ride" in eventing, such a distinction honoring horse-and-rider pairs with a combined age of 100 or more didn't even exist. That didn't deter her. Thanks to her determination, coupled with the support of a local farm owner and the U.S. Eventing Association, it does now. Last year, the East Wenatchee, Washington, resident became the first recipient of the newly established USEA Century Ride Achievement Award, sponsored by Spokane Sport Horse Farm. [Mary Sawyer's Ride of the Century]


I am going to run a differential expression analysis on raw count RNA-seq data with DESeq.
but I need to introduce a condition. So what I am wandering is: does the normalisation depend on the condition? What if I change it?
I would like to produce a normalised dataset that I can afterwards use in different analysis, analysing differential expression according to different conditions. Is it possible?
Another thing I would like to know is if I can use principal components rather than batches in my analysis, do Deseq/Deseq2 allow it?
I have had several problems with the batch effects, so maybe the PCs will be more helpful!
2) I was using DESeq rather than DESeq2 for these first steps only because it allows me to get directly a matrix of normalised counts, that I would like to use afterwards in different analysis ( like LMM analysis). I see anyway that I can retrieve the Size factors from deseq2, so I can probably use them to normalise the countData. Would it be correct? Both normalising the counts from deseq2 and using them in other analyses?
The counts() accessor works the same in DESeq2. BTW, you might want to read through this example of using SVA with DESeq2.
Yes, it seems what I need! I will try with SVA, thank you.
DESeq2 has a function called plotPCA(), you could use returnData argument to get PC1 and PC2 data, which you can append to your metadata and use it for model matrix.
Normalization is independent of condition, so you can use anything you want there. You can use any continuous covariates you want, including principal components. Note that you'll need to use the GLM commands for this. You should also use DESeq2 rather than DESeq.


For the past few years, my family has been trying to live a healthier lifestyle and consume more nutritious foods. It isn't always easy though. We do like our convenience products and a few sweets here and there, but we have started reading nutrition labels and buying organic whenever possible. However, I grew up in the south, and fried foods have always been a comfort food and a staple in our dinner menu often. On our quest to eat healthier, I have been wanting to cut out the vegetable oil that I normally use. I have been hearing a lot about coconut oil lately, but admit, I've been a little chicken to try it for myself. I really love coconut flavor, but my husband and kids don't. I was worried that it would alter the flavor of our favorite dishes, making it taste like a coconut. When LouAna contacted me to try their coconut oil in a recipe, I almost passed on the offer. But after reading about it a little more, my curiosity got the best of me, and worry turned to excitement.
Coconut oil actually has many health benefits. Not only is it a heart healthy food, it can actually help our bodies resist bacteria and viruses that can make us sick. It can also improve insulin in the body, boost thyroid function, and increase the metabolism.
I was sent a large jar of LouAna Coconut Oil for my family to try.
When opening the jar, I was a little confused as to how to use the product. It was in solid form, which I wasn't expecting from an oil.
I was able to scoop some out with a metal spoon fairly easily though. I had no problem getting it to melt over medium heat. It melted clear, and I did not notice any scent when it was cooking.
I first used it to fry some chicken nuggets. The nuggets brown up nice and golden in the coconut oil, and I was pleased that there was no coconut flavor on them at all! They tasted the exact same as they do when I use vegetable oil to fry them.
Since I do a lot of baking, I decided to try coconut oil in my favorite Zucchini Bread Recipe. Again, there was no difference in flavor, and the bread had the same consistency it has when I use other oils to bake it.
Mix all ingredients together until thoroughly combined.
Pour into two medium size greased and floured loaf pans.
LouAna Coconut Oil is great for cooking, baking, frying, and popping corn. It contains no trans fat, no cholesterol, is non hydrogenated, and is a non-GMO food. It's also inexpensive! You can purchase a large jar at your local Wal-Mart for only $5.98!
If you would like to learn more about LouAna Coconut Oil, or any of LouAna's other oils, be sure to visit their website. While you are there, be sure to check out the recipe section, as well as grab a money saving coupon too!
*Disclosure- I received the above mentioned product courtesy of the sponsor for the purpose of this review. No monetary compensation was provided. All opinions are genuine, based on my experience with the product, and have not been influenced by promotional items.
Ok, that sounds delicious. I have actually never had zucchini bread before, can you believe that?
Girl, you don't know what you are missing! It is so moist and delicious. It's one of my favorite breads ever!
We eat them a few times a month. Not the yucky processed ones that you find in the freezer section. Homemade all the way.
does it have coconut taste?
No Dezzy, there is no coconut taste! It doesn't alter the flavor of foods one bit!
In South of India we use Coconut oil for everything-Cooking,frying, baking, Did you know it is also good for your hair-I put it in my and my girls hair overnight and then wash it off in the morning-to give that lovely shine-Its also a good moisturizer-if you have dry skin/lips!
I haven't tried it for it's beauty benefits yet, but I love the idea of using it for more than cooking! My daughter has really dry hair from over styling it. I think we will try some on her hair and see how well it goes. Thanks for the tips!
Zucchini Bread is so so so awesome. Pinning your recipe. And thanks for sharing the info. on the coconut oil!!
It sounds so good! I pinned it.
oh, this has me so excited for spring and gardening!! looks amazing. I haven't tried this brand of coconut oil (yet) but am due to get some next week. have to check it out.
I love zucchini bread! Also, I've never tried coconut oil before. I'm definitely intrigued and I need to just pick some up and find a recipe!
I love coconut oil. It's a great substitute for heavier oils and healthier too. It makes dishes like and airy yet you don't taste the coconut flavor.
I have heard so many good things about coconut oil. I really need to try to use it in my cooking more.
Brilliant! I have been looking for coconut oil recipes! Thanks, and see you tomorrow for WW!
I love zucchini bread and love cooking with coconut oil. Thanks for sharing!
Over the past several months have heard more and more about the benefits of coconut oil. I have not yet used it myself, but I am curious about it.
I love coconut oil! It works so great and the fact that it is solid is such a plus for me, so much easier to deal with!
That sounds amazing! Would love to try it with coconut oil!
I love Zucchini bread!! I need to try substituting coconut oil in our favorite recipes.
I love using coconut oil in recipes so am super excited to see this one! Thanks for sharing!
What a small world! I use Louana coconut oil too! I have heard that organic coconut oil is better for you, but it's too expensive!
I am always looking for ways to make our meals and baked goods healthier. I will have to try this!
That's what I thought when I first opened coconut oil too. I actually need to get some more. Mine is gone!
Oh what a neat idea. I love this type of bread, but never thought of using coconut oil.. hmm. I will have to give it a whirl!
When I was younger I would never even try zucchini bread....because it had zucchini in it. LOL. Then I tasted it one day and I was hooked. It's my favorite now! LOVE it! I'll have to try your recipe though. I've never made it with coconut oil.
Ok, that looks freaking delicious! I use coconut oil for everything, including facials!
I've never used Coconut oil before but I've heard good things.
I use that Coconut oil all the time! Never tried it in Zucchini Bread but I need to!
That sounds delicious. I've been needing more recipes that use coconut oil!
I love using coconut oil in my recipes. Thanks for sharing!
I love zucchini bread. I haven't tried coconut oil in recipes yet. I've only used it in my hair.
Yum! This looks delicious. I'll definitely have to try it.
I've never tried coconut oil - probably because I thought that everything would come out with a faint coconut flavor. Thanks for clearing it up!
We LOVE coconut oil in this home! It truly is the best baking addition, and the healthiest!
We use coconut oil for my biracial daughters' hair. I have only used it once in cooking but love zucchini bread, will have to try this recipe.
I use a lot of coconut oil, but I use it for healing. I don't cook much with it but that zucchini bread looks great.
I've never even heard of coconut oil, but I love good zucchini bread!


General discussions regarding Ravnica Online.
Please discuss in-game items/houses only. DO NOT attempt to sell VIP accounts.
Both technical and in-game. Dudas sobre el juego y soporte técnico.
Have a nice screenshot? Share it here.


This week our creative non-fiction drafts were due and in peer reviewing them I got to see how creative our classmates are and the stories and experiences they draw from. For me, I wanted to be creative and I was thinking of what I should write about and media of course came to mind. It's such a big part of my life and the person that I am and so I couldn't think of anything better to write about. The concept wasn't the hard part, it was the words and the description. How repetitive I wanted to be with a word and figuring out if I wanted to use years of my life or segment it by numbers. It was off to a good start, but it still needs work and that is why we have our second drafts to work on.
I'm not really sure where I am trying to go with this post, but this week has been just one of those weeks for me. Been kind of out of it, just going through the motions. Not feeling the best, feeling like I didn't accomplish much and while I probably should have put a little more time into my first draft, I think what I did write was has great potential. Having this outlet to write something, that doesn't have a specified length and can be about our perspective is a lot of fun and I have never really had the opportunity to delve into something like this until now. It helps me to find more confidence as a writer and do it in a creative, fun way that doesn't need to follow any specific rules except for the ones that are part of CNF itself.
It helps me to learn more about where I can go with my writing. I hope from doing this I gain a better understanding of who I am as a person. The second draft could be some of my best writing and I'm excited to continue fleshing it out.
More teachers should include creative non-fiction for writing assignments because it would allow the students more freedom and creativity to express themselves through writing.
This week I have been struggling a bit with writing, well writing a paper for my history class and maybe it's because of all the reading involved with it, which is very tedious, but I am not really feeling it. It always seems like writing for me is repetitive. Like, I can't find the right words, and I don't have enough good words to use. Have you ever felt that way? Like your writing doesn't sound intelligent? That no matter how many words you try to use to make it sound intelligent and thought out, it doesn't. That is how I feel with my writing. Is it because I haven't read enough books to really open my mind up to different words and more descriptive language than what I use? There are so many words that mean the same thing, but the reason that people use the less popular ones is because they sound better in the flow of the writing. When a teacher says "Don't use contractions. Make it sound scholarly and intelligent." I try, but it doesn't seem to work for me. Maybe I need a thesarus to provide better words for me.
History papers require us to analyze and use many examples and while there is nothing wrong with that, because of my difficulty with using more and better words, they seem to always lack something. With all the 'that's, the's, didn't, doesn't, wouldn't…" I am too generalized. I have a hard time being specific with what I am saying. At least in my writing. Maybe in my speaking too lol, but it is a struggle for me because I know that I am improving in my writing and opening up a little more, but I can always do more and I hope that I am able to write this paper in a way that shows I know what I am talking about and can use specific details and references.
We tend to hold back sometimes in our writing because we are afraid of what people will think and that could also be a reason why my writing lacks detail. I have always felt more comfortable expressing myself through writing, but sometimes even with that, I don't sound how I want to. So maybe I need to journal my thoughts more or take some time to just write. Write what comes to mind. Write what inspires me. Just sit and write. Maybe that will help me to finally find the words that I am looking for.
Do you ever feel like you don't retain the information you learn? Like everything that you need to know or a lecture you just had leaves your brain and doesn't return? Or that we read so much factual information that is the least bit entertaining and then have to regirgitate that information for an exam or a paper. I'm sure we all have felt that way at some point. I don't understand how people do it. Is there a method to the madness? I mean I usually don't read much of the textbooks we are required to have for our classes anyway and I still do a decent job, but then there are times where we have to or we won't be able to write a paper and then it becomes stressful and overwhelming. History classes, while they are interesting, require loads of reading then writing a paper on what we read and since most of the books we have to read are full of facts and historical information, they can be for dull reading and hard to get through. I'm dealing that right now actually. We have several books to read for one of my history classes and if we don't get through all the chapters we have to read we'll get behind and then won't do as well on the paper. It's just so difficult to read all that information cause it's interesting, but it's so much at once and I have always had a hard time just sitting there and reading textbooks or things like that. At least the other books we have to read are more the size of a novel, so that isn't as bad, but the others are lots of reading that is necessary, but not all of it needs to be used in the paper, so it makes it hard to know what to read and what not to. People say "Just look for specific things that the teacher is asking in the question," but in order to do that, we have to read through everything. Hopefully I can do it and get started on the paper. At least we have a question we are focusing on as we read, so that helps.
The point I am trying to make with all of this though is that we are given so much information to read that it's difficult to retain all of it and then they wonder why we do badly on papers or tests. I know college history classes are mainly discussion, lecture and reading on our own, but maybe if what we are required to read was written in a way that made it something we cared about, it would be easier to retain and understand. I always feel behind in reading and like I do badly on my history papers for that reason. When it is smaller readings that relate to things we care about, it makes it a bit easier. So, I don't know how everyone else deals with it, but it's college and we all have to get through it somehow.
So, we all have busy weeks whether it's because of our jobs our going to school or maybe even both and for me, it's both. I am taking 12 units, but it still feels like it can be too much sometimes. Especially when I have a lot of reading to do. That's one of the things that I always seem to get behind on with my classes and maybe it is because I haven't learned how to properly read without gaining too much information and then not remembering because I read so much at once. History classes require a lot of reading and somehow I always have a hard time keeping up which then causes problems because I need to read said chapter or book for a paper that is due and then I can't properly talk about the subject the way I should. Then there is my Physics class which is a hybrid and all the assignments are online, which also requires reading. Ugh! How do people balance it? How do they make sure they read what they need to and still produce and paper worthy of s good grade? I haven't mastered that skill yet, but I hope that I will soon.
Then we have my job, now I enjoy it (I'm a math tutor at an elementary school), but I don't have a whole lot of time afterward to get homework done and I feel like I'm crazy busy all the time. Especially this week I have just been burnt out and mentally drained, so I have been craving some relaxation because I need to figure out how to balance all of this and still accomplish what I need to. Maybe with the reading I can focus mainly on what us being asked to write about for the paper and look for those things throughout the reading so it doesn't overwhelm me. Then just setting a schedule so I can make sure I have time to get everything done that I need to. I enjoy learning and reading and want to retain what I read, but it's difficult when it is a large amount and it he extra information that I don't necessarily need to know. That's usually how it is with the history reading. So much information to five into and try and understand and then take that and write about it. Hopefully with these things in mind, I can start being more successful in my classes and continue surviving the weeks to come.
Blog #1: How Important is Education?
This week and the week before were tough ones for me. Well, this week was 10 times better, but it was still a little difficult. See, my grandmother passed away earlier this month and her funeral was last week and I decided against going because I would have missed a whole week of school and there was going to be a burial here in California this week, so I went to that instead. Anyway, one of the main issues that people had a problem with in my deciding not to attend was that I put school before family and for me that was something that I felt was more important at the moment. Everyone always says "Go to college. Get a good job." and then when we do, we hear "When are you going to be done?" It's like they can't be satisfied until we are out in the world on our own and struggling even though we went to school for God knows how many years. That doesn't matter. What matters is how fast we get there. I felt like my education was something that I needed to focus on and maybe that was the wrong decision, but I, as a person don't like to miss important information and even though I probably could have gotten my information from a classmate or went onto moodle and blackboard, it's not the same as actually being in the classroom because if there are questions or something you aren't sure about, you can ask. I have always been a person who tries to please people, I don't like conflict and it has been hard for me to be more assertive and put myself first, so this was a big deal for me. I didn't want to add extra stress on myself when I knew how my family would act and I might not have been able to even get my homework done while I was there and that would have defeated the whole purpose.
So, that brings me to the burial on Wednesday. It was a small, intimate service at the cemetary with a few family and friends there and I felt like that was more important than the funeral was because it was truly the final goodbye. I like to think that my grandma would have been proud of me for pursuing my education and getting to where I am and I hope that she did. My grandma didn't have a formal education past high school and ended up acquiring her GED later in life and I think she was proud of all of her grandchildren. I guess the point that I am trying to make is that education is important and sometimes it's more important than a family gathering for a death, but instead going to a smaller event that is more poignant and sentimental because it's where she is finally being laid to rest. I got my assignments done and I went to my classes because education is important to me. My future is important and after all the times I've put others first, it was time to put myself first. In reflecting upon this week, I hope I made the right decision and I hope and pray that my grandma would have appreciated what I did. We all make decisions that people consider good or bad and I know many people are upset, but honestly, we can't please everyone. I did what I needed to do for myself at the time and it paid off. I'm not stressed out for missing any classes and I can continue to put school as a priority. That, right there, should be good enough.


text:
Q: Spark incorrect serialization of nested structs on group-reduce by key I want to reduce data frame by key. The reduce logic is pretty complex and requires update on about 10-15 fields. That why I want to convert DataFrame to DataSet and reduce Java POJOs.
Problem
The problem is that after groupByKey-reduceByKey I got some very strange values. Encoders.bean(Entity.class) reads correct data. See Code Example section.
Workarrounds
Replacing Encoders.bean with Encoders.kryo does not work, exception:
Try to map struct<broker_name:string,server_name:string,order:int,storages:array<struct<timestamp:timestamp,storage:double>>> to Tuple1, but failed as the number of fields does not line up.
Also I saw this workarround, but Encoders.product requires TypeTag . I have no idea how to create TypeTag at Java code.
Code Example
    Dataset<Entity> ds = createDataFrame("testData.json", "testSchema.json")
        .as(Encoders.bean(Entity.class));

    // shows correct numbers
    ds.show(10, false);

    // correct data, please pay attention to `storages` column values
+-----------+-----------+-----+-------------------------------+
|broker_name|server_name|order|storages                       |
+-----------+-----------+-----+-------------------------------+
|A1         |S1         |1    |[[2018-10-29 23:11:44, 12.5]]  |
|A2         |S1         |1    |[[2018-10-30 14:43:05, 13.2]]  |
|A3         |S1         |2    |[[2019-11-02 10:00:03, 1001.0]]|
+-----------+-----------+-----+-------------------------------+

    //after reduce shows wrong numbers
    ds
        .groupByKey(o -> new RowKey(o.getBroker_name(), o.getServer_name(), o.getOrder()), Encoders.bean(RowKey.class))
        .reduceGroups((e1, e2) -> e1)
        .map(tuple -> tuple._2, Encoders.bean(Entity.class))
        .show(10, false);

    // wrong values, please pay attention to `storages` column
+-----------+-----+-----------+---------------------------------------------------------+
|broker_name|order|server_name|storages                                                 |
+-----------+-----+-----------+---------------------------------------------------------+
|A1         |2    |S1         |[[7.77011509161492E-309, 149386-07-09 23:48:5454.211584]]|
|A1         |1    |S1         |[[7.61283374479283E-309, 148474-03-19 21:14:3232.5248]]  |
+-----------+-----+-----------+---------------------------------------------------------+

Entity.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Entity implements Serializable {
    private String broker_name;
    private String server_name;
    private Integer order;
    private Storage[] storages;
}

Storage.java
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Storage implements Serializable {
    private Timestamp timestamp;
    private Double storage;
}

testData.json:
[
  {
    "broker_name": "A1",
    "server_name": "S1",
    "order": 1,
    "storages": [
      {
        "timestamp": "2018-10-29 23:11:44.000",
        "storage": 12.5
      }
    ]
  },
  {
    "broker_name": "A1",
    "server_name": "S1",
    "order": 1,
    "storages": [
      {
        "timestamp": "2018-10-30 14:43:05.000",
        "storage": 13.2
      }
    ]
  },
  {
    "broker_name": "A1",
    "server_name": "S1",
    "order": 2,
    "storages": [
      {
        "timestamp": "2019-11-02 10:00:03.000",
        "storage": 1001.0
      }
    ]
  }
]

testSchema.json:
{
  "type": "struct",
  "fields": [
    {
      "name": "broker_name",
      "type": "string",
      "nullable": true,
      "metadata": {}
    },
    {
      "name": "server_name",
      "type": "string",
      "nullable": true,
      "metadata": {}
    },
    {
      "name": "order",
      "type": "integer",
      "nullable": true,
      "metadata": {}
    },
    {
      "name": "storages",
      "type": {
        "type": "array",
        "elementType": {
          "type": "struct",
          "fields": [
            {
              "name": "timestamp",
              "type": "timestamp",
              "nullable": true,
              "metadata": {}
            },
            {
              "name": "storage",
              "type": "double",
              "nullable": true,
              "metadata": {}
            }
          ]
        },
        "containsNull": true
      },
      "nullable": true,
      "metadata": {}
    }
  ]
}

A: That's because deserialization uses structural matching on schema inferred by the Encoder, and since bean classes have no natural structure, fields of the schema are ordered by name.
So if you define a bean class like your Entity, the schema inferred from the bean Encoder will be
Encoders.bean(Storage.class).schema().printTreeString();

root
 |-- storage: double (nullable = true)
 |-- timestamp: timestamp (nullable = true)

not

root
 |-- timestamp: timestamp (nullable = true)
 |-- storage: double (nullable = true)

and this the schema that should be used the Dataset. In other words schema defined as:
StructType schema = Encoders.bean(Entity.class).schema();

or
StructType schema = StructType.fromDDL(
  "broker_name string, order integer, server_name string, " +
  "storages array<struct<storage: double, timestamp: timestamp>>"
);

would be valid, and could be used to load testData directly:
Dataset<Entity> ds = spark.read()
  .option("multiline", "true")
  .schema(schema)
  .json("testData.json")
  .as(Encoders.bean(Entity.class));

while your current schema, which is equivalent to:

StructType valid = StructType.fromDDL(
  "broker_name string, order integer, server_name string, " +
  "storages array<struct<timestamp: timestamp, storage: double>>"
);

is not, despite the fact that it would work with JSON reader, which (in contrast to Encoders), matches data by name.
Arguably this behavior should be reported as a bug - intuitively there should be no case where Encoder dumps data that is incompatible with it's own loading logic.
Related JIRA ticket - SPARK-27050

redpajama_set_name: RedPajamaStackExchange


The IGTP-805AT from Planet Technology features a fiber optic link capability that allows for the extension of the network range.
Note: ALL Industrial units do NOT include a power supply. Click here to shop all Industrial Power Supply.
PLANET's IGTP-805AT is an Industrial Gigabit Media Converter that combines Ethernet media conversion (from 1000BASE-X to 10/100/1000BASE-T) with 802.3at Power over Ethernet Plus (PoE+) injector. It delivers both up to 30 watts of power output and high data transmission speed to PDs (powered devices) installed in remote areas where sufficient and reliable power input is required. Its 1000BASE-X fiber optic uplink port provides long distance, high speed and stable data transmission to a remote core network. The power system of the IGTP-805AT supports 12~48V DC power input or 24V AC power input for power redundancy and operational flexibility.
Operating under the temperature range of -40 to 75°C and being enclosed in an IP30 rugged case, the IGTP-805AT can be placed in almost any difficult environment.
With the long fiber distance support, the IGTP-805AT still sustains the transmission performance as high as 1000Mbps. It works in the high-performance Store and Forward mechanism, and also can prevent packet loss with IEEE 802.3x flow control and the LFP (Link Fault Passthrough) function in the DIP switch design. Furthermore, it can immediately alarm the administrators the issue from the link media and provide efficient solution to monitor the network power usage.
Complying with the IEEE 802.3at Power over Ethernet Plus technology, the IGTP-805AT provides up to 30 watts of PoE output power. It is also backward compatible with 802.3af PoE standards to allow users to flexibly deploy standard and high powered devices simultaneously with no need of software configuration. With data and PoE from one unit, the IGTP-805AT can reduce cable deployment and eliminate the need for dedicated electrical outlets on the wall, ceiling or any unreachable place.
To facilitate the 802.3at power PoE+ usage with the commonly-used 12~48V DC power input or 24V AC power input for transportation and industrial-level applications, the IGTP-805AT adopts the 12~48V DC to 52V power boost technology to solve power source issue but does not require special power supplies. Its wide-ranging voltages design is suitable for worldwide operability with high availability applications requiring dual or backup power inputs.
The IGTP-805AT is specifically designed with durable components and strong housing case to operate reliably in electrically harsh and climatically demanding environments like plant floors or curbside traffic control cabinets. The IGTP-805AT is packaged in a compact, IP30 rugged case that allows either DIN-rail or wall mounting to have the efficient use of cabinet space. With IP30 rugged case protection and PoE design, the IGTP-805AT is ideal for service providers, campuses and public areas to deploy PoE wireless access points, IP cameras or IP phones in any places easily and efficiently with cost-effectiveness. It can also operate in wide temperatures ranging from -40 to 75°C, which allows it to be placed in almost any location.
Copper 10/100/1000BASE-T Ethernet TP interface. Maximum 100m distance.
The MGB-TSX by Planet Technology is an extended temperature 1000Mbps Gigabit SFP Fiber Transceivers (-40 to 75 C).
The POE-E201 from Planetechusa.com is an innovative solution to lengthen the reach of ethernet above the standard 100 meters. This device features IEEE 802.3at / 802.3af PoE standard.
The MFB-TF20 by Planet Technology is an extended temperature 100Mbps Fast Ethernet SFP Fiber Transceiver (-40 to 75C).
The POE-162S by Planet Technology is a quality PoE splitter that features the IEEE 802.3at High Power over Ethernet standard that features 24 watts of output power.
The MFB-TFX by Planet Technology is an extended temperature 100Mbps Fast Ethernet SFP Fiber Transceiver (-40 to 75C).
The MGB-TLX by Planet Technology is an extended temperature 1000Mbps Gigabit SFP Fiber Transceivers (-40 to 75 C).


Without hosting, your website won't be visible to the outside world. We pride ourselves on reliable and resilient hosting services with our Standard website hosting as a base package that covers the needs of most smaller websites. If you don't need help with your website but just need reliable hosting, we can provide this.
Using a fully automated system in a modern state of the art Dell Servers, Our Tier 3 data centre is based in Leeds (UK). We're able to offer Linux and Windows hosting services, on modern clustered web and database servers.
Fast, reliable UK Cloud web hosting services from £9.99 per month – and with instant activation we can have your site on the net now!
All our hosting plans come with website hosting, and email services. Our email comes with 400mb boxes as standard and these can all be upgraded to 10GB. With auto responders, email forwarders, junk mail all included in our standard plans.
We can even offer Exchange email on any email address from just £9.99 per month.
Get in touch about your Standard Website Hosting project, we'd love to hear from you.


text:
GOP Voters Still Support Trump's Muslim Ban
Voters to Obama: Yes, We Are at War with Radical Islam
Americans Expect A Brussels-Like Attack At Home
Voters Worry About Feds' Focus on Terror Here at Home
Voters Strongly Favor Crackdown on Those Who Overstay Visas
Most Say 'No' to Syrian Refugees In Their State
Support remains high and unchanged among Republicans for GOP front-runner Donald Trump's controversial proposal to temporarily ban Muslims from entering the United States.
A new Rasmussen Reports national telephone survey finds that 67% of Likely Republican Voters favor a temporary ban on all Muslims entering the United States until the federal government improves its ability to screen out potential terrorists from coming here. Just 23% are opposed, while 10% are undecided. (To see survey question wording, click here.)
This is unchanged from early December when Trump first made the proposal following the terrorist massacre in San Bernardino, California. His plan drew the condemnation of President Obama, many in the media, virtually all of his political opponents and even some politicians abroad.
Among all likely voters, 45% still favor Trump's plan, while 42% are opposed. This compares to 46% and 40% respectively in the previous survey. Twelve percent (12%) of these voters are now undecided.
Most voters (54%) continue to believe it is too easy for foreigners to legally enter the United States, although that's down from 59% in December. Only nine percent (9%) think it's too hard to enter this country legally, while 30% believe the level of difficulty is about right.
Among voters who say it's too easy, 69% favor the temporary ban on Muslims entering the country. Voters who believe it's too hard to legally enter the United States or say the level of difficulty is appropriate are strongly opposed to Trump's plan.
The survey of 1,000 Likely Voters was conducted on March 30-31, 2016 by Rasmussen Reports. The margin of sampling error is +/- 3 percentage points with a 95% level of confidence. Field work for all Rasmussen Reports surveys is conducted by Pulse Opinion Research, LLC. See methodology.
A recent government report says that over 500,000 visitors to the United States overstayed their legal visas last year and didn't go home. Most voters think those who overstay their visas are a serious national security threat and that the feds need to take stronger steps to deport them.
Republicans (73%) are more than twice as likely as Democrats (35%) to think it is too easy for foreigners to legally enter this country. Fifty-four percent (54%) of voters not affiliated with either major party agree.
Only 27% of Democrats favor the proposed temporary ban on admitting Muslims to this country; 60% are opposed. Unaffiliated voters are evenly divided.
Few voters in any demographic category believe it is too hard to enter the United States legally. But those under 40 aren't nearly as convinced as their elders are that it's too easy. These younger voters are also far more likely to oppose Trump's proposed Muslim ban.
Whites and blacks feel more strongly than other minority voters that it is too easy to get into this country legally.
Seventy-eight percent (78%) of all voters have a favorable opinion of immigrants who work hard, support their family and pursue the American Dream, but only 55% believe that's what most immigrants have in mind these days.
Sixty percent (60%) oppose the settling of Syrian refugees in the state where they live. Seventy-seven percent (77%) are concerned that giving thousands of Syrians asylum poses a national security risk to the United States.
Sixty percent (60%) believe the United States is at war with radical Islamic terrorism. However, 50% think the federal government does not focus enough on the threat of domestic Islamic terrorism.
Most Americans consider it likely that there will be a Brussels-like terrorist attack here within the next year. But do Americans think the United States can ever be made completely safe from terrorist attacks?
Please sign up for the Rasmussen Reports daily e-mail update (it's free) or follow us on Twitter or Facebook. Let us keep you up to date with the latest public opinion news.
What America Thinks: Are We Ever Really Safe?