2008Q3 Grant Proposal: Bavl

Category: Grants

Comments (5)


Sounds like a really interesting project, but I'm not really seeing the benefit for the perl community.


Hi,
Can you please compare your project with http://www.livemocha.com/? Aren't there other projects where you could collaborate on?

Cheers,
Alberto (chair of TPF GC)


Nice project, but i agree with Leon - not perlish enough.


Hi, I'm Vee Schlais, producer of Bavl for John Beppu and Pip Stuart. I'm responding on their behalf because Pip composed a draft response of such magnitude that we felt it prudent for me to summarize it here. (please let us know if you'd like to experience unfiltered Pip ;)

Regarding Leon and FAGZAL's comments:
Bavl will benefit the perl community by providing the resources and forum to communicate more clearly no matter the hackers' native language. Bringing the international community together will increase the quality of all perl code by desegregating hackers and encouraging global collaboration regardless of the language. It takes effective communication to have a healthy community... besides, Bavl could someday encompass programming languages as well as spoken, which would certainly benefit the perl community. But that might be projecting too far ahead.

Regarding Alberto's comment:
Thanks for pointing out livemocha.com as we were not familiar with it. Before embarking on the Bavl project we researched existing language learning sites and found none adhered to our Free Software and open education philosophy. As an example, while livemocha appears to have a very polished (and well funded) site, they intend to provide neither free education nor software.

Alberto: Pip has also drafted a lengthy response to your e-mail about the significance of the requested grant dollar amount. And he wanted you to know he will post a reply to this forum soon.

If you have any further questions, or just want to chat, please post it here or send any one of us a direct e-mail.

Thanks -Vee


Thanks for asking about the requested dollar amount of Bavl's proposal, Alberto. I didn't figure you'd mind if I posted this response to the forums since others might have interest too.

$4095.63 is a 31337 g33|< h4x0rz way to round numbers to the nearest power of two minus one (as attested to in Stephenson's seminal SnowCrash). In perl:


`perl -e "print('$', 2**12 - 1, '.', 2**6 - 1)"`


Below is an expanded explanation that I originally drafted (on my BlackBerry, while spending the first week of August in Santa Barbara for my brother's wedding) in response to this question. It is presented here, in case some additional depth is desired that I'm obviously eager to expose. Hopefully I've explained things comprehensively. ;) -Pip

Since quantum computing hasn't been developed far enough for us to be rid of binary computing yet, we're still bound to binary (i.e., powers of two) computational systems. Strangely large integers gain otherwise unlikely significance among hackers due to their binary efficiency.

Perl indexes arrays && lists in a zero-based fashion, like uniform data-types with byte-sized offsets from the data-type's base-address in system RAM (i.e., Random Access Memory) which corresponds to an array name in C/C++... so the first element is at index: [0] && the last element is at index: [n - 1] where n is the total positive integer count of data elements. Perl can count list elements for the array `@example` by just using @example in scalar context. The final element is indexed as one less than the size so: $example[(@example - 1)] == $example[$#example] == $example[-1]. More concretely, start with:


my @example =('A', 'B', 'C', 'D', 'E', 'F');


... where @example in scalar context results in 6 (six, the integer size of the array of uppercase letters span from 'A' to 'F'). $#example results in 5 (five) as the zero-based index of that sixth element 'F'. Negative indices will generically index arrays backwards starting from the end. So, in this example, -1 (negative one) would be equivalent by also indexing that last scalar value of 'F'.

Unsigned (i.e., non-negative) integer data-types (i.e., uint) also start from value 0 (zero) && can hold a maximum value of: 2**n - 1 where n is now representing the total number of bits (which typically ascend in increments of eight, forming bytes). Therefore, one byte (i.e., eight bits) can hold 256 different values. This is because the two values a single bit holds, raised to the eighth power for the number of bits, is 2**8, which is also sometimes written with different notation as 2^8, or 2*2 * 2*2 * 2*2 * 2*2 or 4*4 * 4*4 or 16*16. These 256 values span from 0 to 255 for a byte or a single ASCII character (C/C++'s char data-type from before UniCode or many multi-byte character-sets had been developed or widely used) since zero is the first number && typically indexes the null character in text to terminate strings (char-arrays) or much less frequently as terminators for specialized files (EOF as EndOfFile), tapes (EOT as EndOfTape), or other particular data-streams.


Bytes : Bits : Values : Range
1 (one) : 8 : 256 : 0..255
2 (two) : 16 : 65,536 : 0..65535
3 (three) : 24 : 16,777,216 : 0..16777215
4 (four) : 32 : 4,294,967,296 : 0..4294967295
8 (eight) : 64 : 18,446,744,073,709,551,616 : 0..18 sextillian - 1 ;)
16 (sixteen) : 128 : huge : 0..huge - 1
32 (thirtytwo) : 256 : fscking psycho huge : 0..aw fscking hell - 1


You might also notice that the eight bits making up a byte can be themselves counted in 2**3 as 0..7, so rather counter-intuitively, multiples of three can exhibit binary signifigance too. I am an eccentrically strong proponent of applying Base64 (which I prefer consisting of 0..9,A..Z,a..z,.,_) to representations of almost every area of computing. B64 chars hold 2**6 values from zero to 63 in six bits. Two B64 chars occupy 12 bits for 4,096 values up to 4095. B64 chars can each easily look distinct (if one is sensitive enough to perceive && preserve case, like capital letters remaining larger && usually less curved && dangly than their lowercase counterparts). They also conveniently encompass enough values to represent separate fields of times (0..59 jinx,framez,secondz,minutez, or 0..23 hourz && TimeZonez) && dates (1..31 days,1..12 months, then encodings for years, centuries, etc.) which exhibit several advantageous && convenient properties over popular alternatives. Please see my CPAN modules: Math::BaseCnv && Time::PT for further reference.

B64 can handily represent standard playing cards (including jokerz) for games like Solitaire, BlackJack, && Poker. See Games::Cards::Poker. B64 also holds each of the red, green, && blue (RGB) color components of the palette registers of old full-screen VGA text-modes. I even like B64 compressions of phone numbers, credit-card numbers, && IP addresses (both 32-bit v4 dotted-quads && IPv6 which I think are 128-bits each && seem unwieldy as distressingly long strings of segmented hexadecimal && decimal characters in the examples I've seen, but I haven't used them much yet). Another potential benefit of B64 is the ability to transmit binary data like the raw digital music tracks on a CD directly within the simple text body of an e-mail or web-page. I've even encoded Rubik's Cubes in around 64 B64 characters! ;)

Due to the inherent nature of binary computing technology, these 2**n - 1 numbers represent maximum values in a minimum number of bits, so they maximize efficiency. My favorite SciFi book, SnowCrash by Neal Stephenson, relates hackers' penchant for selection of such binarily efficient numbers. Since Beppu-san && I have months of work to do to realize Bavl in some form we've envisioned, I accounted for our expected living expenses, moderate hardware && hosting expenses we'd likely incur, etc. then I separately rounded the dollars && cents components of the figure we'd seek to have granted... yielding:
  $4095.63


Sorry if I've belabored the point but I was asked why && didn't know how much detail would be needed for my response to be considered thorough (or even sufficient). I had figured most Perl h4x0rz would intuitively recognize && understand why I chose those values but it's good to be reminded how idiosyncratic my methods tend to be, even among communities of my kin. Please let me know if further clarification or explanation would be beneficial.

Regarding whether the above describes "good reason" for strangeness or not, it seems that determination is now yours (assuming I've explained myself adequately).

Thanks very much.

Sincerely,
-Pip =)

------Original Message------
from: Alberto Simoes via RT <Bugs-Correspond@NetLabs.Develooper.Com>
reply-to: Bugs-Correspond@NetLabs.Develooper.Com
to: PipStuart@GMail.Com
date: Fri, Aug 1, 2008 at 4:10 AM
subject: [perl #57498] TPF Grant Proposal for Bavl Project by Beppu && Pip
mailed-by: NetLabs.Develooper.Com

Hi, Pip

Proposal received. Thanks.

> Amount Requested
>
> $4,095.63

Is there any good reason for this strange value? :)

Cheers
Alberto


Sign in to add comment