Aron,<div><br></div><div>I don't think this is necessary. You should be able to get the unique element using:</div><div><br></div><div>`this.element.get(0);`</div><div><br></div><div>The `element` attribute is the jquery object for the cell and `get(0)` returns the actual underlying DOM element for it.</div>
<div><br></div><div>Cheers,</div><div><br></div><div>Brian<br><br><div class="gmail_quote">On Mon, Oct 29, 2012 at 1:59 PM, Aron Ahmadia <span dir="ltr"><<a href="mailto:aron@ahmadia.net" target="_blank">aron@ahmadia.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Developers,<div><br></div><div>While fixing the code for MathJax rendering that I broke earlier this week, I came across the need to address a specific element in the DOM:</div>
<div><br></div><div><a href="http://docs.mathjax.org/en/latest/typeset.html" target="_blank">http://docs.mathjax.org/en/latest/typeset.html</a></div>
<div><br></div><div>I know there has been some work attaching unique ids to cells in the code in the past, but there didn't seem to be any obvious functionality currently implemented in Cells for this.  You'll notice that the pull request I just updated here: <a href="https://github.com/ipython/ipython/pull/2517" target="_blank">https://github.com/ipython/ipython/pull/2517</a> adds the following code to textcell.js:</div>

<div><br></div><div><table style="margin:0px;padding:0px;border:0px;border-collapse:collapse;border-spacing:0px;font:inherit;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:1.4;width:918px;color:rgb(51,51,51);text-align:start">

<tbody style="margin:0px;padding:0px;border:0px"><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);text-decoration:underline;background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

..</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
...</td><td style="margin:0px;padding:0px;border:0px;color:rgb(153,153,153);background-color:rgb(255,255,204);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
@@ -39,9 +39,11 @@ var IPython = (function (IPython) {</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

39</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
39</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
             extraKeys: {"Tab": "indentMore","Shift-Tab" : "indentLess"},</pre></td></tr><tr style="margin:0px;padding:0px;border:0px">
<td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
40</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
40</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
             onKeyEvent: $.proxy(this.handle_codemirror_keyevent,this)</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

41</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
41</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
         });</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
42</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+        this.cell_id = IPython.utils.uuid();</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

42</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
43</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
         // The tabindex=-1 makes this div focusable.</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
44</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+        // id is a unique cell_id necessary for updating MathJax intelligently</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

43</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
45</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
         var render_area = $('<div/>').addClass('text_cell_render border-box-sizing').</pre></td></tr><tr style="margin:0px;padding:0px;border:0px">
<td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
44</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
 </td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(255,221,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
-            addClass('rendered_html').attr('tabindex','-1')<span style="margin:0px;padding:0px;border:0px;background-color:rgb(255,170,170)"></span>;</pre></td></tr><tr style="margin:0px;padding:0px;border:0px">

<td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
46</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+            addClass('rendered_html').attr('tabindex','-1')<span style="margin:0px;padding:0px;border:0px;background-color:rgb(170,255,170)">.attr('id',this.cell_id)</span>;</pre>
</td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

45</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
47</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
         cell.append(input_area).append(render_area);</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

46</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
48</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
         this.element = cell;</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

47</td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
49</td><td style="margin:0px;padding:0px;border:0px;width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
     };</pre></td></tr></tbody></table></div><div><br></div><div>What I'm doing here is first calling into IPython.utils.uuid() to generate a cell_id (The one from the Cell prototype appears to be broken/unused?), then adding that as an id to the </div>

<div>rendered html div.</div><div><br></div><div>Then later, I can grab this id when I need to update the math:</div><div><br></div><div><table style="margin:0px;padding:0px;border:0px;border-collapse:collapse;border-spacing:0px;font:inherit;font-family:Consolas,'Liberation Mono',Courier,monospace;line-height:1.4;width:918px;color:rgb(51,51,51);text-align:start">

<tbody style="margin:0px;padding:0px;border:0px"><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

<br> </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
82</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+    TextCell.prototype.typeset = function () {</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
83</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+        if (window.MathJax){</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
84</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+            var cell_math = document.getElementById(this.cell_id);</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
85</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+            MathJax.Hub.Queue(["Typeset",MathJax.Hub,cell_math]);</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
86</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+        }</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
87</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(221,255,221);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+    };</pre></td></tr><tr style="margin:0px;padding:0px;border:0px"><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">

 </td><td style="margin:0px;padding:0px 6px;border-width:0px 1px 0px 0px;border-right-style:solid;border-right-color:rgb(221,221,221);background-color:rgb(236,236,236);color:rgb(170,170,170);text-align:right">
88</td><td style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0);background-color:rgb(255,255,204);width:850px"><b style="padding:0px;border:0px;font-weight:normal;font-family:'Octicons Regular';display:inline-block;line-height:1;font-size:16px;width:25px;min-height:16px;color:rgb(65,131,196)"></b><pre style="margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 10px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace">
+</pre></td></tr></tbody></table><br></div><div>This really speeds up MathJax rendering considerably, so I think it's worth doing, but I feel like I'm really nosing into code I don't understand well, so it would be good to hear feedback if there are opinions on this.</div>
<span class="HOEnZb"><font color="#888888">
<div><br></div><div>A</div>
</font></span><br>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Brian E. Granger<br>Cal Poly State University, San Luis Obispo<br><a href="mailto:bgranger@calpoly.edu" target="_blank">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com" target="_blank">ellisonbg@gmail.com</a><br>
<br>
</div>