MENU
last data update: 2011/10/15, 16:43
Website loading time
during the test: 1.41 s
cable connection (average): 1.6 s
DSL connection (average): 1.8 s
modem (average): 12.07 s
HTTP headers
HTTP/1.0 301 Moved Permanently
Location: http://stevehanov.ca/blog/index.php
Content-Length: 0
Connection: close
Date: Sat, 15 Oct 2011 23:43:09 GMT
Server: lighttpd/1.4.26
HTTP/1.0 200 OK
X-Powered-By: PHP/5.3.2-1ubuntu4.9
Content-type: text/html
Connection: close
Date: Sat, 15 Oct 2011 23:43:10 GMT
Server: lighttpd/1.4.26
Information about DNS servers
stevehanov.ca | SOA | ns3.zoneedit.com | soacontact.zoneedit.com | 2011427817 | 300 300 300 300 IN 7200 |
stevehanov.ca | A | 69.196.135.15 | IN | 300 | |
stevehanov.ca | MX | 0 | mail.zoneedit.com | IN | 7200 |
stevehanov.ca | MX | 0 | mail3.zoneedit.com | IN | 7200 |
stevehanov.ca | NS | ns18.zoneedit.com | IN | 7200 | |
stevehanov.ca | NS | ns3.zoneedit.com | IN | 7200 |
Received from the first DNS server
Request to the server "stevehanov.ca"
You used the following DNS server:
DNS Name: ns18.zoneedit.com
DNS Server Address: 50.22.254.159#53
DNS server aliases:
HEADER opcode: REQUEST, status: NOERROR, id: 45703
flag: qr aa rd REQUEST: 1, ANSWER: 6, AUTHORITY: 2, ADDITIONAL: 0
REQUEST SECTION:
stevehanov.ca. IN ANY
ANSWER SECTION:
stevehanov.ca. 7200 IN MX 0 mail.zoneedit.com.
stevehanov.ca. 7200 IN MX 0 mail3.zoneedit.com.
stevehanov.ca. 7200 IN NS ns3.zoneedit.com.
stevehanov.ca. 7200 IN NS ns18.zoneedit.com.
stevehanov.ca. 300 IN A 69.196.135.15
stevehanov.ca. 7200 IN SOA ns3.zoneedit.com. soacontact.zoneedit.com. 2011427817 300 300 300 300
AUTHORITY SECTION:
stevehanov.ca. 7200 IN NS ns3.zoneedit.com.
stevehanov.ca. 7200 IN NS ns18.zoneedit.com.
Received 214 bytes from address 50.22.254.159#53 in 13 ms
Received from the second DNS server
Request to the server "stevehanov.ca"
You used the following DNS server:
DNS Name: ns3.zoneedit.com
DNS Server Address: 76.74.236.21#53
DNS server aliases:
HEADER opcode: REQUEST, status: NOERROR, id: 54433
flag: qr aa rd REQUEST: 1, ANSWER: 6, AUTHORITY: 2, ADDITIONAL: 0
REQUEST SECTION:
stevehanov.ca. IN ANY
ANSWER SECTION:
stevehanov.ca. 7200 IN MX 0 mail.zoneedit.com.
stevehanov.ca. 7200 IN MX 0 mail3.zoneedit.com.
stevehanov.ca. 7200 IN NS ns3.zoneedit.com.
stevehanov.ca. 7200 IN NS ns18.zoneedit.com.
stevehanov.ca. 300 IN A 69.196.135.15
stevehanov.ca. 7200 IN SOA ns3.zoneedit.com. soacontact.zoneedit.com. 2011427817 300 300 300 300
AUTHORITY SECTION:
stevehanov.ca. 7200 IN NS ns3.zoneedit.com.
stevehanov.ca. 7200 IN NS ns18.zoneedit.com.
Received 214 bytes from address 76.74.236.21#53 in 82 ms
Subdomains (the first 50)
Typos (misspells)
atevehanov.ca ztevehanov.ca xtevehanov.ca dtevehanov.ca etevehanov.ca wtevehanov.ca srevehanov.ca sfevehanov.ca sgevehanov.ca syevehanov.ca s6evehanov.ca s5evehanov.ca stwvehanov.ca stsvehanov.ca stdvehanov.ca strvehanov.ca st4vehanov.ca st3vehanov.ca stecehanov.ca stebehanov.ca stegehanov.ca stefehanov.ca stevwhanov.ca stevshanov.ca stevdhanov.ca stevrhanov.ca stev4hanov.ca | stev3hanov.ca steveganov.ca stevebanov.ca stevenanov.ca stevejanov.ca steveuanov.ca steveyanov.ca stevehznov.ca stevehsnov.ca stevehwnov.ca stevehqnov.ca stevehabov.ca stevehamov.ca stevehajov.ca stevehahov.ca stevehaniv.ca stevehankv.ca stevehanlv.ca stevehanpv.ca stevehan0v.ca stevehan9v.ca stevehanoc.ca stevehanob.ca stevehanog.ca stevehanof.ca tevehanov.ca sevehanov.ca | stvehanov.ca steehanov.ca stevhanov.ca steveanov.ca stevehnov.ca stevehaov.ca stevehanv.ca stevehano.ca tsevehanov.ca setvehanov.ca stveehanov.ca steevhanov.ca stevheanov.ca steveahnov.ca stevehnaov.ca stevehaonv.ca stevehanvo.ca sstevehanov.ca sttevehanov.ca steevehanov.ca stevvehanov.ca steveehanov.ca stevehhanov.ca stevehaanov.ca stevehannov.ca stevehanoov.ca stevehanovv.ca |
Location
IP: 76.10.136.23
continent: NA, country: Canada (CAN), city: Etobicoke
Website value
rank in the traffic statistics:
There is not enough data to estimate website value.
Basic information
website build using CSS
code weight: 74.59 KB
text per all code ratio: 45 %
title: Steve Hanov's Programming Blog
description:
keywords:
encoding: utf-8
language: en
Website code analysis
one word phrases repeated minimum three times
Phrase | Quantity |
---|---|
the | 308 |
to | 124 |
of | 104 |
in | 101 |
is | 95 |
we | 53 |
for | 52 |
and | 52 |
The | 39 |
it | 35 |
you | 33 |
are | 32 |
that | 31 |
data | 30 |
can | 27 |
with | 27 |
words | 25 |
if | 25 |
var | 25 |
be | 24 |
using | 24 |
return | 23 |
files | 21 |
not | 20 |
an | 20 |
as | 19 |
// | 18 |
If | 18 |
word | 18 |
We | 17 |
each | 17 |
will | 16 |
by | 16 |
It | 16 |
number | 16 |
use | 15 |
In | 15 |
all | 15 |
then | 14 |
file. | 14 |
trie | 14 |
or | 14 |
so | 13 |
reading | 13 |
index | 13 |
search | 13 |
hash | 13 |
on | 13 |
file | 13 |
This | 13 |
this | 13 |
up | 12 |
node | 12 |
def | 12 |
totalBytes | 11 |
which | 11 |
function | 11 |
ptr | 11 |
store | 11 |
first | 11 |
find | 11 |
); | 11 |
only | 11 |
do | 11 |
one | 10 |
have | 10 |
table | 10 |
functions | 10 |
function( | 10 |
need | 10 |
when | 10 |
}); | 9 |
at | 9 |
): | 9 |
it. | 9 |
into | 9 |
heap | 9 |
has | 9 |
== | 9 |
but | 9 |
they | 9 |
no | 9 |
from | 9 |
given | 9 |
could | 8 |
web | 8 |
array | 8 |
its | 8 |
Here | 8 |
To | 8 |
contains | 8 |
does | 8 |
read | 8 |
0; | 8 |
would | 8 |
on: | 8 |
keys | 8 |
+= | 8 |
error | 8 |
list | 8 |
know | 8 |
two | 8 |
results | 8 |
promises | 8 |
code | 7 |
bits | 7 |
some | 7 |
buckets | 7 |
promise | 7 |
MA-FSA | 7 |
our | 7 |
memory | 7 |
program | 7 |
any | 7 |
time | 7 |
them | 7 |
else | 7 |
value | 7 |
More... | 7 |
encoding | 7 |
example | 6 |
But | 6 |
returns | 6 |
Promises | 6 |
loop | 6 |
simply | 6 |
took | 6 |
load | 6 |
dictionary | 6 |
6 | |
want | 6 |
related | 6 |
more | 6 |
top | 6 |
many | 6 |
look | 6 |
take | 6 |
position | 6 |
create | 6 |
encode | 6 |
there | 6 |
information | 6 |
very | 6 |
child | 6 |
go | 6 |
-- | 6 |
function. | 6 |
table. | 5 |
10 | 5 |
values | 5 |
size | 5 |
bigArray, | 5 |
nodes | 5 |
dictionary. | 5 |
structures | 5 |
item | 5 |
much | 5 |
browser | 5 |
time, | 5 |
long | 5 |
Here's | 5 |
add | 5 |
binary | 5 |
users | 5 |
after | 5 |
You | 5 |
}, | 5 |
new | 5 |
because | 5 |
about | 5 |
how | 5 |
structure | 5 |
import | 5 |
what | 5 |
parts | 5 |
on-disk | 5 |
process | 5 |
see | 5 |
like | 5 |
always | 5 |
items | 5 |
easy | 5 |
same | 5 |
callback | 5 |
contents | 5 |
Javascript | 5 |
start | 5 |
operation | 5 |
python | 4 |
where | 4 |
word: | 4 |
--- | 4 |
current | 4 |
self, | 4 |
string. | 4 |
different | 4 |
file, | 4 |
possible | 4 |
rank | 4 |
since | 4 |
most | 4 |
operating | 4 |
[] | 4 |
through | 4 |
probe | 4 |
bit | 4 |
sequence, | 4 |
don't | 4 |
build | 4 |
Since | 4 |
Reading | 4 |
By | 4 |
everything | 4 |
get | 4 |
being | 4 |
may | 4 |
takes | 4 |
known | 4 |
large | 4 |
memory. | 4 |
your | 4 |
smallest | 4 |
cannot | 4 |
other | 4 |
way | 4 |
-> | 4 |
Minimal | 4 |
even | 4 |
while | 4 |
linear | 4 |
", | 4 |
files. | 4 |
console.log("Done | 4 |
second | 4 |
Succinct | 4 |
both | 4 |
my | 4 |
keep | 4 |
For | 4 |
remaining | 4 |
However, | 4 |
operations | 4 |
fs | 4 |
example, | 4 |
All | 4 |
error, | 4 |
console.log("Error | 4 |
When | 4 |
between | 4 |
require("fs"); | 4 |
function, | 3 |
Blog | 3 |
result | 3 |
run | 3 |
best | 3 |
They | 3 |
way, | 3 |
Perfect | 3 |
Creating | 3 |
faster | 3 |
class | 3 |
There | 3 |
bytes: | 3 |
trie. | 3 |
below, | 3 |
ones | 3 |
place | 3 |
also | 3 |
space | 3 |
doesn't | 3 |
succinct | 3 |
Instead | 3 |
check | 3 |
used. | 3 |
asynchronous | 3 |
toy | 3 |
empty | 3 |
out | 3 |
described | 3 |
hashing | 3 |
intermediate | 3 |
errors | 3 |
callbacks | 3 |
write | 3 |
above | 3 |
perfect | 3 |
(time.time() | 3 |
uses | 3 |
performance | 3 |
should | 3 |
Steve | 3 |
SQLITE | 3 |
self.getDword( | 3 |
word. | 3 |
low | 3 |
work | 3 |
candidate | 3 |
I've | 3 |
row | 3 |
amount | 3 |
than | 3 |
encoded | 3 |
found | 3 |
difference | 3 |
searching | 3 |
problems | 3 |
level | 3 |
just | 3 |
were | 3 |
Fortunately, | 3 |
So | 3 |
needed | 3 |
s" | 3 |
%g | 3 |
Using | 3 |
element | 3 |
lot | 3 |
start) | 3 |
words. | 3 |
compact | 3 |
step | 3 |
links | 3 |
#!/usr/bin/python | 3 |
An | 3 |
string | 3 |
text | 3 |
byte | 3 |
around | 3 |
time.time() | 3 |
needs | 3 |
containing | 3 |
structure. | 3 |
totalBytes); | 3 |
gets | 3 |
once, | 3 |
(also | 3 |
done. | 3 |
instead | 3 |
implemented | 3 |
i++ | 3 |
order | 3 |
directory | 3 |
files.length; | 3 |
console.log( | 3 |
fs.readFile( | 3 |
folder | 3 |
system | 3 |
until | 3 |
Read | 3 |
usually | 3 |
sort | 3 |
readFile() | 3 |
two word phrases repeated minimum three times
Phrase | Quantity |
---|---|
of the | 34 |
in the | 32 |
number of | 15 |
to the | 14 |
the files | 12 |
the number | 11 |
on the | 10 |
find the | 10 |
files in | 9 |
for each | 9 |
to find | 8 |
It is | 8 |
the data | 8 |
of words | 8 |
need to | 8 |
for the | 8 |
you can | 7 |
Here is | 7 |
is the | 7 |
it is | 7 |
all of | 7 |
the file. | 7 |
the keys | 7 |
with the | 7 |
the top | 6 |
does not | 6 |
the trie | 6 |
to be | 6 |
we can | 6 |
to create | 5 |
the words | 5 |
process the | 5 |
is not | 5 |
the first | 5 |
can be | 5 |
to store | 5 |
would be | 5 |
the given | 5 |
store the | 5 |
the same | 5 |
words in | 5 |
If you | 5 |
first child | 5 |
the web | 5 |
all the | 5 |
the value | 5 |
want to | 5 |
contains the | 5 |
have to | 5 |
If we | 5 |
ptr += | 4 |
the current | 4 |
to use | 4 |
Reading the | 4 |
parts of | 4 |
way to | 4 |
the nodes | 4 |
the smallest | 4 |
console.log("Done reading | 4 |
totalBytes 0; | 4 |
var totalBytes | 4 |
list of | 4 |
reading files. | 4 |
that we | 4 |
function( error, | 4 |
if error | 4 |
the word | 4 |
totalBytes += | 4 |
fs require("fs"); | 4 |
var fs | 4 |
using the | 4 |
on-disk data | 4 |
contents of | 4 |
we use | 4 |
we could | 4 |
is an | 4 |
we are | 4 |
related words | 4 |
the dictionary. | 4 |
is in | 4 |
and the | 4 |
to load | 4 |
hash table | 4 |
for in | 4 |
search took | 4 |
the loop | 3 |
s" (time.time() | 3 |
to build | 3 |
needed to | 3 |
lot of | 3 |
index == | 3 |
if index | 3 |
the bit | 3 |
check if | 3 |
search is | 3 |
%g s" | 3 |
took %g | 3 |
data is | 3 |
array of | 3 |
In the | 3 |
encoding is | 3 |
an array | 3 |
start time.time() | 3 |
use the | 3 |
the contents | 3 |
implemented in | 3 |
data structures | 3 |
): return | 3 |
is no | 3 |
We then | 3 |
(also known | 3 |
an MA-FSA | 3 |
how to | 3 |
described how | 3 |
); else | 3 |
data structure | 3 |
using Promises | 3 |
reading file. | 3 |
then the | 3 |
(time.time() start) | 3 |
information about | 3 |
of its | 3 |
the buckets | 3 |
and it | 3 |
of memory | 3 |
console.log("Error reading | 3 |
the operating | 3 |
that the | 3 |
of related | 3 |
that is | 3 |
data if | 3 |
error, data | 3 |
so that | 3 |
to do | 3 |
}); Reading | 3 |
of bits | 3 |
This is | 3 |
operating system | 3 |
loop is | 3 |
so you | 3 |
For example, | 3 |
the difference | 3 |
once, and | 3 |
All of | 3 |
each node | 3 |
example of | 3 |
we know | 3 |
the rank | 3 |
amount of | 3 |
folder in | 3 |
the folder | 3 |
// Read | 3 |
Read all | 3 |
heap search | 3 |
in this | 3 |
an on-disk | 3 |
create the | 3 |
// The | 3 |
that return | 3 |
easy to | 3 |
it will | 3 |
we want | 3 |
we will | 3 |
Instead of | 3 |
has to | 3 |
the program | 3 |
child is | 3 |
child of | 3 |
can use | 3 |
as the | 3 |
they are | 3 |
possible to | 3 |
look up | 3 |
in an | 3 |
the file | 3 |
which is | 3 |
through the | 3 |
using callbacks | 3 |
not need | 3 |
three word phrases repeated minimum three times
Phrase | Quantity |
---|---|
the number of | 11 |
the files in | 8 |
to find the | 7 |
files in the | 7 |
all of the | 5 |
number of words | 5 |
parts of the | 4 |
is in the | 4 |
words in the | 4 |
Reading the files | 4 |
var totalBytes 0; | 4 |
the first child | 4 |
of the file. | 4 |
of words in | 4 |
var fs require("fs"); | 4 |
function( error, data | 3 |
in the dictionary. | 3 |
that we want | 3 |
// Read all | 3 |
in the folder | 3 |
the folder in | 3 |
we want to | 3 |
console.log("Done reading files. | 3 |
first child of | 3 |
if index == | 3 |
described how to | 3 |
an array of | 3 |
error, data if | 3 |
not need to | 3 |
does not need | 3 |
s" (time.time() start) | 3 |
%g s" (time.time() | 3 |
so you can | 3 |
took %g s" | 3 |
the operating system | 3 |
number of bits | 3 |
of the files | 3 |
all the files | 3 |
}); Reading the | 3 |
the contents of | 3 |
data if error | 3 |
B tags
fs.readdir(path, [callback])
fs.readFile(filename, [encoding], [callback])
encodes data very efficiently,
does not need to be decoded to be used.
rank(x)
select(y)
By trial and error.
In step 1
In step 2
mathematically proven that your choice is optimal?
U tags
I tags
promise
future
channel
EventEmitter
reject
resolve
Promise.all()
Animal.coffee
pointers
succinct data structures
tries use a lot of memory
yth
select
level order
data
i
select0(i + 1) - i
i+1
directory
trie
Minimal
for sure
d
largest first
sounds like
images
file name | alternative text |
---|---|
1024.png | |
1025.png | Number of items vs. Time (s) in Perfect Hashing algorithm |
920.png | |
921.png | |
997.png | |
998.png | |
chart?chxr=0,0,1000000|1,0,24&chxt=x,y&chs=500x400&cht=s&chco=989866&chds=0,25,0,1000000,0,100&chd=t:2.24,4.48,6.68,9.27,11.71,13.81,16.72,18.78,21.12,24.81|100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000|84,23,69,81,47,94,60,93,64,54&chtt=Number+of+items+vs.+Time+(s)+in+Perfect+Hashing+algorithm | |
C64_startup_animiert.gif | |
book.png |
headers
H1
Other posts by Steve
H2
Reading the files in parallel using callbacks
Reading the files sequentially using callbacks
Reading the files in parallel using Promises
Reading the files sequentially using Promises
No waiting
Toy example
When shouldn't you use this?
The Heap
Succinct Data Structures
A Succinct Trie
Demo
H3
Reading the files in parallel using callbacks
Reading the files sequentially using callbacks
Reading the files in parallel using Promises
Reading the files sequentially using Promises
No waiting
Toy example
When shouldn't you use this?
The Heap
Succinct Data Structures
A Succinct Trie
Demo
H4
H5
H6
internal links
address | anchor text |
---|---|
index.php | View all posts |
http://stevehanov.ca/resume.pdf | Resume |
index.php?about | About |
?id=127 | Four ways of handling asynchronous operations in node.js |
?id=127 | More... |
?id=126 | Type-checked CoffeeScript with jzbuild |
?id=126 | More... |
?id=124 | Creating binary RPM/DEB packages the easy way |
?id=124 | More... |
?id=123 | Zero load time file formats |
?id=123 | More... |
?id=122 | Finding the top K items in a list efficiently |
http://stevehanov.ca/blog/index.php?id=95 | I usually end up rewriting everything in C++ eventually |
?id=122 | More... |
?id=121 | An instant rhyming dictionary for any web site |
?id=121 | More... |
?id=120 | Succinct Data Structures: Cramming 80,000 words into a Javascript file. |
?id=120 | It doesn't work in RSS readers -- go to my blog to see it |
?id=115 | how to create an MA-FSA |
?id=120 | More... |
?id=119 | Throw away the keys: Easy, Minimal Perfect Hashing |
http://stevehanov.ca/blog/index.php?id=114 | part 1 |
http://stevehanov.ca/blog/index.php?id=115 | part 2 |
?id=119 | More... |
?id=117 | Why don't web browsers do this? |
?id=117 | More... |
?id=116 | Fun with Colour Difference |
?id=116 | my blog |
?id=116 | my blog |
../colours/Colours.js | Colours.js |
../colours/driver.js | driver.js |
http://stevehanov.ca/blog/index.php?id=62 | exploiting colour difference for edge detection |
?id=116 | More... |
?before=2011-02-04 10:46:55 | More Posts |
mailto:steve.hanov@gmail.com | steve.hanov@gmail.com |
?id=127 | Four ways of handling asynchronous operations in node.js |
?id=126 | Type-checked CoffeeScript with jzbuild |
?id=124 | Creating binary RPM/DEB packages the easy way |
?id=123 | Zero load time file formats |
?id=122 | Finding the top K items in a list efficiently |
?id=121 | An instant rhyming dictionary for any web site |
?id=120 | Succinct Data Structures: Cramming 80,000 words into a Javascript file. |
?id=119 | Throw away the keys: Easy, Minimal Perfect Hashing |
?id=117 | Why don't web browsers do this? |
?id=116 | Fun with Colour Difference |
?id=115 | Compressing dictionaries with a DAWG |
?id=114 | Fast and Easy Levenshtein distance using a Trie |
?id=111 | The Curious Complexity of Being Turned On |
?id=109 | Cross-domain communication the HTML5 way |
?id=106 | Five essential steps to prepare for your next programming interview |
?id=107 | Minimal usable Ubuntu with one command |
?id=105 | Finding awesome developers in programming interviews |
?id=104 | Compress your JSON with automatic type extraction |
?id=103 | JZBUILD - An Easy Javascript Build System |
?id=102 | Pssst! Want to stream your videos to your iPod? |
?id=101 | "This is stupid. Your program doesn't work," my wife told me |
?id=100 | Google Buzz gets less awful every day |
?id=99 | The simple and obvious way to walk through a graph |
?id=98 | Asking users for steps to reproduce bugs, and other dumb ideas |
?id=97 | Creating portable binaries on Linux |
?id=96 | Bending over: How to sell your software to large companies |
?id=90 | Regular Expression Matching can be Ugly and Slow |
?id=95 | C++: A language for next generation web apps |
?id=92 | qb.js: An implementation of QBASIC in Javascript (part 1) |
?id=93 | Zwibbler: A simple drawing program using Javascript and Canvas |
?id=91 | You don't need a project/solution to use the VC++ debugger |
?id=86 | Boring Date (comic) |
?id=85 | barcamp (comic) |
?id=88 | How IE |
?id=84 | I didn't know you could mix and match (comic) |
?id=83 | Sign here (comic) |
?id=78 | It's a dirty job... (comic) |
?id=82 | The PenIsland Problem: Text-to-speech for domain names |
?id=77 | Pitching to VCs #2 (comic) |
?id=81 | Building a better rhyming dictionary |
?id=76 | Does Android team with eccentric geeks? (comic) |
?id=80 | Comment spam defeated at last |
?id=75 | Pitching to VCs (comic) |
?id=79 | How QBASIC almost got me killed |
?id=74 | Blame the extensions (comic) |
?id=73 | How to run a linux based home web server |
?id=72 | Microsoft's generosity knows no end for a year (comic) |
?id=71 | Using the Acer Aspire One as a web server |
?id=68 | When programmers design web sites (comic) |
?id=70 | Finding great ideas for your startup |
?id=67 | Game Theory, Salary Negotiation, and Programmers |
?id=57 | Coding tips they don't teach you in school |
?id=59 | When a reporter mangles your elevator pitch |
?id=66 | Test Driven Development without Tears |
?id=65 | Drawing Graphs with Physics |
?id=64 | Free up disk space in Ubuntu |
?id=63 | Keeping Abreast of Pornographic Research in Computer Science |
?id=62 | Exploiting perceptual colour difference for edge detection |
?id=61 | Experiment: Deleting a post from the Internet |
?id=60 | Is 2009 the year of Linux malware? |
?id=58 | Email Etiquette |
?id=56 | How a programmer reads your resume (comic) |
?id=55 | How wide should you make your web page? |
?id=54 | Usability Nightmare: Xfce Settings Manager |
?id=34 | Usability Nightmare: ktoon |
?id=53 | cairo blur image surface |
?id=52 | Automatically remove wordiness from your writing |
?id=50 | Why Perforce is more scalable than Git |
?id=49 | A complete blogging system in 1900 lines of php |
?id=48 | Optimizing Ubuntu to run from a USB key or SD card |
?id=38 | UMA Questions Answered |
?id=44 | Make Windows XP look like Ubuntu, with Spinning Cube Effect |
?id=41 | See sound without drugs |
?id=40 | Standby Preventer |
?id=39 | Stock Picking using Python |
?id=37 | Spoke.com scam |
?id=36 | Stackoverflow.com |
?id=35 | Copy a cairo surface to the windows clipboard |
?id=33 | Simulating freehand drawing with Cairo |
?id=31 | Free, Raw Stock Data |
?id=29 | Installing Ubuntu on the Via Artigo |
?id=28 | Why are all my lines fuzzy in cairo? |
?id=26 | A simple command line calculator |
?id=25 | Tool for Creating UML Sequence Diagrams |
?id=22 | Exploring sound with Wavelets |
?id=16 | A Fast Calorie Calculator for Windows |
?id=4 | UMA and free long distance |
?id=2 | UMA's dirty secrets |
?id=12 | Creating a Todo list in Ajax |
?id=19 | Installing the Latest Debian on an Ancient Laptop |
?id=23 | How to make the MSDN style tree view in Javascript |
?id=21 | Dissecting Adsense |
?id=20 | HTML/ Javascript/ CSS Pretty Printer |
?id=18 | Comment Spam |
?id=17 | Web Comic Aggregator |
?id=14 | Experiments in making money online |
?id=15 | How much cash do celebrities make? |
?id=13 | Draw waveforms and hear them |
?id=11 | Cell Phones on Airplanes |
?id=10 | Detecting C++ memory leaks |
?id=9 | What does your phone number spell? |
?id=8 | A Rhyming Engine |
?id=7 | Rules for Effective C++ |
?id=3 | Cell Phone Secrets |
speaking.html | Speaking engagements |
external links
address | anchor text |
---|---|
http://www.hanovsolutions.com | Software |
http://rhymebrain.com | RhymeBrain |
http://zwibbler.com | Zwibbler |
http://www.google.com/profiles/steve.hanov#buzz | Google Buzz! |
http://learnyousomeerlang.com/ | Erlang |
http://www.google.com/codesearch#R_N7SDoEwWc/assets/www/scripts/phonegap.0.9.5.js&q=phonegap%20channel&type=cs | channel |
http://en.wikipedia.org/wiki/Promise_(programming) | from the 1970's |
https://github.com/kriszyp/node-promise | promise |
https://github.com/smhanov/node-promise-sequence | PromiseSequence |
http://jashkenas.github.com/coffee-script/ | Coffeescript |
http://www.debian.org/doc/debian-policy/ | Debian Policy Manual |
http://fedoraproject.org/wiki/How_to_create_an_RPM_package | Creating an RPM file |
http://docs.python.org/library/mmap.html | mmap |
http://www.hanovsolutions.com/thesaurus.dat | Download 11 MB of it |
http://www.sqlite.org/ | SQLITE |
http://en.wikipedia.org/wiki/Heap_(data_structure) | wikipedia |
http://www.cplusplus.com/reference/stl/priority_queue/ | priority queue |
http://en.wikipedia.org/wiki/Selection_algorithm | Selection Algorithm |
http://rhymebrain.com | RhymeBrain.com |
http://rhymebrain.com/api.html | my API |
http://ejohn.org/blog/javascript-trie-performance-analysis/ | Word Game |
http://en.wikipedia.org/wiki/Flash_memory | flash memory |
http://lookups.pageforest.com/ | a more compact format |
http://www.cs.cmu.edu/afs/cs/project/aladdin/wwwlocal/compression/00063533.pdf | other papers |
http://www.aclweb.org/anthology/P/P09/P09-2086.pdf | since |
http://www.springerlink.com/index/pr061mhfqwm6grrw.pdf | then. |
http://uwspace.uwaterloo.ca/handle/10012/64 | to implement select in constant time |
http://www.hanovsolutions.com/trie/Bits.js | Bits.js |
http://cmph.sourceforge.net/papers/esa09.pdf | according to this paper |
http://cmph.sourceforge.net/ | CMPH |
http://cmph.sourceforge.net/papers/thesis.pdf | Botelho's thesis |
http://www.gnu.org/software/gperf/ | Gperf |
http://blog.asmartbear.com/color-wheels.html | |
http://blog.asmartbear.com/color-wheels.html | the way the human eye works |
http://vimeo.com/11688209 | George Takei is hawking TVs |
http://en.wikipedia.org/wiki/Lab_color_space | LAB |
http://en.wikipedia.org/wiki/CIELUV | LUV |
http://www.w3schools.com/css/css_colornames.asp | names commonly recognized by most browsers |
http://en.wikipedia.org/wiki/Force-based_algorithms_(graph_drawing) | this wikipedia article |
http://www.sentex.net/~mwandel/ | Matthias Wandel's Home Page |
http://jimlawless.wordpress.com | Direct Threaded Daydreams |
http://papersincomputerscience.org | Papers in Computer Science |
http://aliasaria.ca/blog | a canadian startup |
http://www.codinghorror.com | Coding Horror |
http://successfulsoftware.net | Successful Software |
http://www.garywill.com/blog | Gary Will's Tech Digest |
http://blogs.msdn.com/oldnewthing/default.aspx | The Old New Thing |
http://linuxhaters.blogspot.com | Linux Hater's Blog |
http://ridiculousfish.com/blog | Ridiculous Fish |