Here's my candidate for a redesign of the Mexican flag.
Old:

New:

Navigation: Home | THE LOG | Log Archives | Resume | Contact Info | Public Key | SSL | Math Applets | Site Map | WP Backend | RSS2 | Atom
Here's my candidate for a redesign of the Mexican flag.
Old:

New:

Hal Canary |
Art |
2010-08-28 15:40:53 UTC
Permanent Link |
Comments Off
I am published in The Electronic Journal of Combinatorics 17(1), R105.
Hal Canary |
Life, Mathematics |
2010-08-12 09:42:12 UTC
Permanent Link |
Comments Off
<!-- Easy Gravatar implementation for
Wordpress comment page: -->
<?php
$gravlink = "http://www.gravatar.com/avatar/";
$gravlink .= md5(strtolower(trim(get_comment_author_email())));
$gravlink .= "?d=".urlencode("http://halcanary.org/images/q80.png");
echo $gravlink; ?>
Hal Canary |
Computers & Code |
2010-07-17 09:25:23 UTC
Permanent Link |
Comments Off
Here's your basic LaTeX document:
%% FILE: basic.tex
\documentclass[letterpaper,12pt]{article}
\begin{document}
\input{graph}
\end{document}
The file graph.tex is generated using Gnuplot like this:
#!/usr/bin/gnuplot ## FILE: graph.gnuplot set xrange [-3:3] set yrange [0:.42] set ytics nomirror autofreq 0, .1 set terminal latex size 3,1.5 set output 'graph.tex' f(x) = .39894228040143267794 * exp(-0.5 * (x ** 2)) set style line 1 linecolor rgb "black" linewidth 1 plot f(x) ls 1 notitle
Here's the execution:
$ gnuplot graph.gnuplot $ pdflatex basic.tex > /dev/null $ evince basic.pdf &
This makes a really professional-looking graph I can put in a document.
![[]](/images/2010-07-16_graph.png)
Now here's what I want to see:
![[]](/images/2010-07-16_graph_2.png)
How do I do this with Gnuplot?
Hal Canary |
Computers & Code |
2010-07-16 22:10:14 UTC
Permanent Link |
2 Comments
This week, I finally broke down and bought an ebook reader — B&N's $150 WiFi Nook (ISBN 9781400532629). It's a beautiful little device.
I got the Jonathan Adler Punctuation Cover (978161560062) since it's both very sturdy and cheaper than most.
I've already side-loaded 90 free books onto the device. These books have come from several places. In no particular order:
Places to buy eBooks:
Hal Canary |
Books, Computers & Code |
2010-06-27 14:39:03 UTC
Permanent Link |
Comments Off
Six days ago I woke up with a horrible back pain. I must have strained it at work, and I think those magazine recycling boxes are to blame. After taking it easy over the weekend I felt much better, but work exacerbates the pain.
After I let my boss know that my back was still hurting me, she pointed out that we had some lumbar support belts hidden away in the office. So I started using one and found that it helped me put less strain on the injured part of my back. But I look like a dork.
Hal Canary |
Life |
2010-06-10 07:04:12 UTC
Permanent Link |
Comments Off
Even though I've studied this algorithm a couple of times, I've never had to implement it before. So I assigned it to myself.
/** should have a time-complecity of O(N×log(N))
and a space-compelcity of O(N) **/
void mergesort(int N, int array[]) {
int k; // k is the block size.
int x; //x is which block we are at.
int i,j; //indices in old[]
int p; // index in new[]
int ilimit,jlimit; //end of blocks.
int *hold = malloc(sizeof(hold) * N);
if (hold == NULL) {
fprintf(stderr,"malloc failed\n");
exit(2);
}
int *new = hold;
int *old = array;
int *tmp;
for (k = 1; k < N; k *= 2) {
p = 0;
for (x = 0; x < N; x += (2*k)) {
i = x;
ilimit = i + k;
j = ilimit;
if (ilimit >= N) {
while (i < N)
new[p++] = old[i++];
break; //out of for-loop
}
jlimit = j + k;
if (jlimit >= N)
jlimit = N;
while (1) {
if (old[i] < old[j]) {
new[p++] = old[i++];
if (i == ilimit) {
while (j < jlimit)
new[p++] = old[j++];
break; //out of while-loop
}
} else {
new[p++] = old[j++];
if (j == jlimit) {
while (i < ilimit)
new[p++] = old[i++];
break; //out of while-loop
}
}
} // End while loop.
} // End inner for loop.
tmp = old; old = new; new = tmp;
}// End outer for loop.
if (old != array)
for (i = 0; i < N; i++)
array[i] = old[i];
free(hold);
return;
}
Next step is to translate to Java and use .compareTo() with arrays of references:
public static void mergeSort(Comparable array[]) {
int N = array.length;
int k; // k is the block size.
int x; // x is which block we are at.
int i,j; //indices in old[]
int p; // index in new[]
int ilimit,jlimit; // end of blocks.
Comparable hold [] = new Comparable [N];
Comparable neww [] = hold;
Comparable old [] = array;
Comparable tmp [];
for (k = 1; k < N; k *= 2) {
p = 0;
for (x = 0; x < N; x += (2*k)) {
i = x;
ilimit = i + k;
j = ilimit;
if (ilimit >= N) {
while (i < N)
neww[p++] = old[i++];
break; //out of for-loop
}
jlimit = j + k;
if (jlimit >= N)
jlimit = N;
while (true) {
if (old[i].compareTo(old[j]) < 0) {
neww[p++] = old[i++];
if (i == ilimit) {
while (j < jlimit)
neww[p++] = old[j++];
break; //out of while-loop
}
} else {
neww[p++] = old[j++];
if (j == jlimit) {
while (i < ilimit)
neww[p++] = old[i++];
break; //out of while-loop
}
}
} // End while loop.
} // End inner for loop.
tmp = old; old = neww; neww = tmp;
}// End outer for loop.
if (old != array)
for (i = 0; i < N; i++)
array[i] = old[i];
}
Hal Canary |
Computer Science, Computers & Code |
2010-05-08 07:55:23 UTC
Permanent Link |
Comments Off
I've got an exam in a few hours, then I'm out of school for a while. The next major project is GRE studying. I've also got a stack of books to read for fun. And Ubuntu 10.04 LTS (Lucid Lynx) comes out tomorrow, so I'll be reinstalling for the first time since I built this computer.
Hal Canary |
Life |
2010-04-28 08:22:43 UTC
Permanent Link |
Comments Off
Given: the set of binary operators contain all unary and nullary operators as a subset.
There are 2^(2×2)=16 possible binary boolean operators. In order, they are: FALSE, x AND y, x AND NOT y, x, y AND NOT x, y, x XOR y, x OR y, x NOR y, x EQV y, NOT y, x OR NOT y, NOT x, y OR NOT x, x NAND y, and TRUE.
Hal Canary |
Mathematics |
2010-04-20 19:13:29 UTC
Permanent Link |
Comments Off
Hal Canary |
Photos |
2010-04-03 21:16:39 UTC
Permanent Link |
1 Comment
#!/bin/sh
abspath () {
D7636=`/usr/bin/dirname "$1"`;
D7636=`(cd "$D7636"; pwd -P)`;
B7636=`/usr/bin/basename "$1"`;
echo "${D7636}/${B7636}";
}
PATH=$1
echo "path = \"${PATH}\""
ABSPATH=`abspath "$PATH"`
echo "absolute path = \"${ABSPATH}\""
Hal Canary |
Computers & Code |
2010-03-31 10:20:12 UTC
Permanent Link |
Comments Off
I should blog something interesting about my life, but I am busy living. I'm working on a school assignment having to do with applying algorithms to graph theory. The grad-level graph theory class I failed comes in handy there. I'm going to go hang out with friends in a few minutes. Work is still there; the days are just as long as ever, and the constant barrage of paper-cuts is bothering me today.
Hal Canary |
Life |
2010-03-26 19:21:24 UTC
Permanent Link |
Comments Off
Copyright 1997-2007 by Hal Canary.
mailto: h3 at halcanary dot org
xmpp:halcanary@jabber.org
aim:halwcanary
http://halcanary.org