-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.xml
103 lines (103 loc) · 18.3 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Tommy Reddad</title>
<link>https://tommyred.dad/</link>
<description>Recent content on Tommy Reddad</description>
<generator>Hugo</generator>
<language>en-us</language>
<lastBuildDate>Sat, 28 Sep 2024 00:00:00 +0000</lastBuildDate>
<atom:link href="https://tommyred.dad/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Coming soon: a few exploratory projects</title>
<link>https://tommyred.dad/post/2024-09-24-coming-soon/</link>
<pubDate>Sat, 28 Sep 2024 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2024-09-24-coming-soon/</guid>
<description><p>I&rsquo;ve been messing around in my free time doing a bit of coding for fun
and to explore areas of interest. It&rsquo;s a bit hard to motivate myself
to code during my free time considering coding is also part of my day
job. But my day job is not very technically interesting, so this is
how I get to explore the fun of coding. I&rsquo;ll briefly describe a few of
these projects which I have in mind.</p></description>
</item>
<item>
<title>Rebuilt this website with Hugo</title>
<link>https://tommyred.dad/post/2024-08-09-hugo/</link>
<pubDate>Fri, 09 Aug 2024 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2024-08-09-hugo/</guid>
<description><p>I decided yesterday to rebuild this website using
<a href="https://gohugo.io/">Hugo</a>, while it was originally built using
<a href="https://jekyllrb.com/">Jekyll</a>. In this post I&rsquo;ll discuss my
experience.</p></description>
</item>
<item>
<title>galtonwatson, a Go module for efficient manipulation of Galton-Watson trees</title>
<link>https://tommyred.dad/post/2020-11-21-galtonwatson-go/</link>
<pubDate>Sat, 21 Nov 2020 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2020-11-21-galtonwatson-go/</guid>
<description><p><a href="https://github.com/tommyreddad/galtonwatson"><strong>galtonwatson</strong></a> is a Go module in early development which implements efficient algorithms for the generation and manipulation of Galton-Watson trees. By extension, this tool can be used to generate uniformly random samples from many classes of rooted trees, including:</p>
<ul>
<li>uniformly random binary trees of a given size,</li>
<li>uniformly random d-ary trees of a given size,</li>
<li>uniformly random Cayley trees, i.e., unordered labeled trees of a given size,</li>
<li>uniformly random ordered trees of a given size,</li>
<li>etc.</li>
</ul></description>
</item>
<item>
<title>The Burrows-Wheeler transform, revisited</title>
<link>https://tommyred.dad/post/2020-09-27-burrows-wheeler-revisited/</link>
<pubDate>Sun, 27 Sep 2020 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2020-09-27-burrows-wheeler-revisited/</guid>
<description><p><a href="https://tommyred.dad/post/2019-08-08-burrows-wheeler/">In my previous post</a>, I discussed the Burrows-Wheeler transform,
and embedded an HTML form on the page which dynamically computed the forward and inverse Burrows-Wheeler transforms with an additional move-to-front compression step. My initial implementation of this form was done in pure JavaScript with no particular care for
efficiency, and in particular used \(O(n^2 \log n)\) space and time. The new implementation on
<a href="https://tommyred.dad/post/2019-08-08-burrows-wheeler/">the same page</a> reduces this complexity to \(O(n \log n)\) time
and \(O(n)\) space, making the form usable on larger texts. It is possible, as noted in the paper of
<a href="https://arxiv.org/pdf/1201.3077.pdf">Gil and Scott</a>, that this time complexity can be reduced to \(O(n)\) by using linear time
suffix array construction algorithms.</p></description>
</item>
<item>
<title>The Burrows-Wheeler transform and move-to-front compression</title>
<link>https://tommyred.dad/post/2019-08-08-burrows-wheeler/</link>
<pubDate>Sat, 08 Aug 2020 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2019-08-08-burrows-wheeler/</guid>
<description><style type="text/css">
.bit-content {
 display: inline;
 }
.bit-count {
 display: inline;
 font-family: Monaco, Menlo, Consolas, "Courier New", DotumChe, monospace;
 }
.bit-count-label {
 font-weight: 700;
 display: inline;
 padding-right: 10px;
 }
.alphabet-content {
 display: table-cell;
 width: 100%;
 border: 1px solid #e1e1e1;
 margin-bottom: 16px;
 font-family: Monaco, Menlo, Consolas, "Courier New", DotumChe, monospace;
 }
.alphabet {
 display: table;
 width: 100%;
 }
label {
 font-weight: 700;
 display: table-cell;
 width: 1px;
 padding-right: 10px;
 }
textarea {
 width: 100%;
 display: block;
 height: 300px;
 border: 1px solid #e1e1e1;
 margin: 0 0 10px;
 padding: 10px;
 font-family: Monaco, Menlo, Consolas, "Courier New", DotumChe, monospace;
 }
.tab-pane {
 min-height: 300px;
 }
.nav-tabs {
 margin: 19px 0px 18px;
 visibility: visible;
 border-bottom: 1px solid #ddd;
 }
.nav-tabs > li.active {
 font-weight: 700;
 }
.nav-tabs > li {
 float: left;
 margin-bottom: -1px;
 }
.tab-content {
 margin-bottom: 10px;
 }
</style>
<ul class="nav nav-tabs">
 <li class="active"><a data-toggle="tab" href="#input-contents">Input</a></li>
 <li><a data-toggle="tab" href="#bwt-contents">BWT</a></li>
 <li><a data-toggle="tab" href="#mtf-contents">MTF</a></li>
 <li><a data-toggle="tab" href="#bwt-mtf-contents">BWT+MTF</a></li>
</ul>
<div class="tab-content">
 <div id="input-contents" class="tab-pane active">
 <textarea id="input" placeholder="Text to compress..."></textarea>
 </div>
 <div id="bwt-contents" class="tab-pane">
 <textarea id="bwt" placeholder="Burrows-Wheeler transform to invert..."></textarea>
 </div>
 <div id="mtf-contents" class="tab-pane">
 <div class="alphabet">
 <label for="mtf-Sigma">Alphabet: </label>
 <input class="alphabet-content" type="text" id="mtf-Sigma">
 </div>
 <textarea id="mtf" placeholder="MTF-compressed binary to decode..."></textarea>
 <div class="bit-count">
 <div class="bit-count-label">Bit count: </div><div class="bit-content" id="mtf-count"></div>
 </div>
 </div>
 <div id="bwt-mtf-contents" class="tab-pane">
 <div class="alphabet">
 <label for="bwt-mtf-Sigma">Alphabet: </label>
 <input class="alphabet-content" type="text" id="bwt-mtf-Sigma">
 </div>
 <textarea id="bwt-mtf" placeholder="BWT+MTF-compressed binary to decode..."></textarea>
 <div class="bit-count">
 <div class="bit-count-label">Bit count: </div><div class="bit-content" id="bwt-mtf-count"></div>
 </div>
 </div>
</div>
<script type="text/javascript" src="https://tommyred.dad/js/2019-08-08-burrows-wheeler/bwt.js"></script>
The above form implements algorithms to code and decode from the
move-to-front compression scheme, with or without an additional
application of the Burrows-Wheeler transform. These extremely slick
algorithms blew my mind when I first heard of them. They are currently
in use, among other places, in
[bzip2](https://en.wikipedia.org/wiki/Bzip2) file compression.</description>
</item>
<item>
<title>Splay trees and optimality</title>
<link>https://tommyred.dad/post/2019-07-27-splay-trees/</link>
<pubDate>Sat, 27 Jul 2019 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2019-07-27-splay-trees/</guid>
<description><p>The splay tree is probably my favourite data structure. Is it useful
in practice? Probably not, but its remarkable optimality properties
coupled with its bare simplicity are so tantalizing that I&rsquo;ve fallen
in love with splaying. In the rest of this post, I&rsquo;ll describe the
splay tree structure, and present some of my favourite splay tree
properties. You will also find an instructive D3 visualization of a
splay tree in motion.</p></description>
</item>
<item>
<title>A uniform sum threshold problem</title>
<link>https://tommyred.dad/post/2019-07-22-uniform-sum-threshold/</link>
<pubDate>Mon, 22 Jul 2019 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2019-07-22-uniform-sum-threshold/</guid>
<description><p>Let \(U_1, U_2, \dots\) be an infinite sequence of independent
\(\mathrm{Uniform}[0, 1]\) random variables. Let \(N\) be the minimum
index for which
\[
U_1 + U_2 + \dots + U_N &gt; 1 .
\]
What is the expected value \(\mathbf{E}\{N\}\)?</p></description>
</item>
<item>
<title>Generating spherical points without complex operations</title>
<link>https://tommyred.dad/post/2019-07-08-generating-without-complex-operations/</link>
<pubDate>Mon, 08 Jul 2019 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2019-07-08-generating-without-complex-operations/</guid>
<description><p>These days, most of everyone&rsquo;s favourite languages and libraries for
scientific computing come ready-equipped with random number generators
for most common univariate distributions: the uniform, binomial,
normal, geometric, exponential, beta, etc. In my experience,
multivariate generation is comparatively hit-or-miss. But in any case,
since documentation usually doesn&rsquo;t specify implementation methods or
running time, you usually can&rsquo;t be sure of the efficiency of one of
these functions without personally examining some source code, or
being lucky and finding that someone else on StackExchange already
did. Thankfully, when in doubt, one can always refer to the excellent
and totally free book <a href="http://nrbook.com/devroye/">Non-Uniform Random Variate
Generation</a> by my old PhD supervisor Luc Devroye. In
fact, it seems this book is even more than free, as stated in this
plea posted by the author on the book&rsquo;s webpage.</p>
<blockquote>
<p><strong>I give anyone the permission, even without asking me, to take these PDF files to a printer, print as many copies as you like, and sell them for profit.</strong> If you would like me to advertise the sales points of the hard copies, please let me know. <strong>To the libraries: Please do not charge patrons for copying this book. I grant everyone the right to copy at will, for free.</strong></p>
</blockquote></description>
</item>
<item>
<title>Discrete minimax estimation with trees</title>
<link>https://tommyred.dad/post/2019-06-27-density-trees/</link>
<pubDate>Thu, 27 Jun 2019 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2019-06-27-density-trees/</guid>
<description><p>This morning, I submitted the final version of my paper <a href="https://arxiv.org/abs/1812.06063">Discrete
minimax estimation with trees</a> (Devroye and Reddad, 2019), which is to appear in the Electronic
Journal of Statistics. I think this paper is conceptually quite
interesting, and I&rsquo;m very happy with the final result, so in this post
I&rsquo;ll describe some of the main ideas present in the work.</p></description>
</item>
<item>
<title>Some conditioned Galton-Watson trees never grow</title>
<link>https://tommyred.dad/post/2019-06-26-conditioned-gw-trees/</link>
<pubDate>Wed, 26 Jun 2019 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/post/2019-06-26-conditioned-gw-trees/</guid>
<description><p>When programmers hear the phrase &ldquo;random tree,&rdquo; they most likely think
of a random binary search tree, i.e., a binary search tree built from
the insertion of a uniformly random permutation of \(n\) keys&mdash;denote such
a tree by \(\mathrm{BST}_n\). A mathematician might instead think that a
``random tree&rsquo;&rsquo; is more likely to be a uniformly random tree taken
from some class, like the set of all ordered binary trees with \(n\) nodes&mdash;denote
such a tree by \(\mathrm{UNIF}_n\). Of course, neither would be wrong. It
should be clear, though, that these two distributions on the space of
binary trees are quite different. In particular, most undergraduate
students of computer science learn, through the study of
comparison-based sorting algorithms, that
\[
\mathbf{E}\{\mathrm{height}(\mathrm{BST}_n)\} = \varTheta(\log n) ,
\]
and some will learn that
\[
\mathbf{E}\{\mathrm{height}(\mathrm{UNIF}_n)\} = \varTheta(\sqrt{n}) .
\]
Though random binary search trees might seem more immediately relevant
to programmers, uniformly random binary trees are part of a bigger
picture which is comparatively more versatile in the probabilistic
analysis of algorithms. To this end, we introduce the concept of
<em>Galton-Watson trees.</em></p></description>
</item>
<item>
<title>About</title>
<link>https://tommyred.dad/about/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/about/</guid>
<description><p><strong><a href="https://tommyred.dad/docs/resume.pdf">Resumé (pdf)</a></strong></p>
<p>I&rsquo;m a software developer at Google and computer scientist based in
Albuquerque, New Mexico. My previous academic work concerned applied probability
theory, statistics, and the analysis of algorithms. I&rsquo;m interested in
deep learning especially concerning natural language
understanding. Interested in games, math, sourdough bread, and jiu-jitsu.</p>
<p>Ex-PhD student of <a href="http://luc.devroye.org/">Luc Devroye</a> at McGill University,
where I worked on many different problems concerning random graphs,
neural networks, minimax density estimation, and properties of
Galton-Watson trees. Completed a Master of Computer Science at the
<a href="http://cglab.ca/">Computational Geometry Lab</a> at Carleton University in Ottawa,
under the supervision of <a href="https://www.cglab.ca/~morin/">Pat Morin</a>, <a href="https://cglab.ca/~vida/">Vida
Dujmović</a>, and <a href="https://jitbose.ca/">Jit Bose</a>, where I produced a
thesis on <em>Encoding Arguments</em>.</p></description>
</item>
<item>
<title>Archive</title>
<link>https://tommyred.dad/archive/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/archive/</guid>
<description><p>Unused. Content is actually defined in the &lsquo;archive&rsquo; layout.</p></description>
</item>
<item>
<title>Publications</title>
<link>https://tommyred.dad/publications/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://tommyred.dad/publications/</guid>
<description><ol>
<li>Brandenberger, A.M., Devroye, L., Reddad, T., 2021. <a href="https://arxiv.org/abs/2010.08613">The Horton-Strahler number of conditioned Galton-Watson trees.</a> Electron J. Probab. 26, 1-29.</li>
<li>Devroye, L., Mehrabian, A., Reddad, T., 2020. <a href="https://arxiv.org/abs/1806.06887">The minimax learning rate of normal and Ising undirected graphical models.</a> Electron. J. Stat. 14, 2338–2361.</li>
<li>Devroye, L., Reddad, T., 2019. <a href="https://arxiv.org/abs/1810.00969">On the discovery of the seed in uniform attachment trees.</a> Internet Mathematics.</li>
<li>Devroye, L., Reddad, T., 2019. <a href="https://arxiv.org/abs/1812.06063">Discrete minimax estimation with trees.</a> Electron. J. Stat. 13, 2595–2623.</li>
<li>Devroye, L., Mehrabian, A., Reddad, T., 2018. <a href="https://arxiv.org/abs/1810.08693">The total variation distance between high-dimensional Gaussians.</a> arXiv e-prints abs/1810.08693.</li>
<li>Morin, P., Mulzer, W., Reddad, T., 2017. <a href="https://arxiv.org/abs/1603.08777">Encoding arguments.</a> ACM Computing Surveys 50, 1–46.</li>
<li>Reddad, T., 2015. Encoding Arguments (Master&rsquo;s thesis). Carleton University, Ottawa, Ontario, Canada.</li>
<li>Reddad, T., Verbrugge, C., 2012. Geometric analysis of maps in real-time strategy games: Measuring map quality in a competitive setting (No. GR@M-TR-2012-3). McGill University, GR@M, Games Research At McGill, School of Computer Science.</li>
</ol></description>
</item>
</channel>
</rss>