Difference between revisions of "User:Chrax"

From Missouri Academy Wiki
Jump to navigation Jump to search
 
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
__NOTOC__
 
==About Me==
 
==About Me==
I am a [[Discoverers|Discoverer]] at the Academy. I am a programmer with moderate skill in [http://www.perl.com perl] and am beginning with C. I also know Java, but I don't consider that to be to my credit. I'm also interested in math, politics/religion (debates are fun at times) and education.
+
I was a [[Discoverers|Discoverer]] (Class of 2005) at the Academy. I am a computer scientist at the University of Tulsa, with a focus on security.
  
I plan on going to the University of Tulsa and majoring in CS, unless some crazy shit happens and MIT accepts me and pays me a ton of money to go.
+
I am a sporadic programmer with moderate skill in [http://www.perl.com perl] and [http://publications.gbdirect.co.uk/c_book/ C]. I also know [http://java.sun.com/ Java], but I don't really use it much. I'm also interested in math and education. (I know a great deal regarding politics and religion, but the debates have lost their novelty, so it's not really an interest anymore. Besides, nothing ever changes. Anybody that participates in such debates is not going to change their mind, rendering the debate itself quite useless.)
  
I'm also a sysop, so you can email (or [[User_talk:Chrax|talk]]) me regarding abuses.
+
Participate in the [http://www.rotten.com Rotten.com] [http://deadpool.rotten.com/ Dead Pool]! And check out my [http://deadpool.rotten.com/profiles/45/06/48878.html profile].
 
 
I've recently become interested in [[Distributed Computing|distributed computing]], and I think the Academy has plenty of cycles it is not using. So I encourage you to join a program and start putting your spare processing power to good use.
 
 
 
Participate in the [http://www.rotten.com Rotten.com] [http://deadpool.rotten.com/ Dead Pool]! And check out my [http://deadpool.rotten.com/profiles/26/23/33725.html profile].
 
 
 
I have recently come into some new [http://gmail.google.com/gmail gmail] invites. So if anybody is in dire need of a fantastic web-based email client, [[User_talk:Chrax|give me your email]] and I will send one your way.
 
 
 
GCS/M/ED/S d- s++: a--- C++ L+++ P++ E W++ N+ K w-- O- V-- PS+ PE- Y+ t X+ R- tv b++ D--- G++ e- h- r* y
 
  
 
==Contact Me==
 
==Contact Me==
 
I have:
 
I have:
* A [http://chrax.freezope.org/index.htm website]
+
* A [http://effigies.ath.cx:85/ website]
 
* A [http://www.livejournal.com/~chrax livejournal]
 
* A [http://www.livejournal.com/~chrax livejournal]
 +
* A [http://www.xanga.com/assshole_jones Xanga] (I don't use it a whole terrible lot.)
 
* A [http://effigies.blogspot.com/ Blogger]
 
* A [http://effigies.blogspot.com/ Blogger]
 
* A [mailto:effigies@gmail.com gmail]
 
* A [mailto:effigies@gmail.com gmail]
 
* A jabber account: chrax@jabber.org
 
* A jabber account: chrax@jabber.org
 
* An AIM account: chrostephir <defunct>
 
* An AIM account: chrostephir <defunct>
* An MSN account: chrax25@hotmail.com <defunct>
+
* An MSN account: effigies@gmail.com
 +
 
 +
==Computing and Whatnot==
 +
===Advice===
 +
I have received a request for advice concerning taking up programming. Of course it's not going to work the same for two people, but I'll give you my suggestions:
 +
 
 +
I suggest coming up with algorithms (step by step instructions) for tasks that you see every day. Up until this past semester I had barely done any programming, but all the time I would break down tasks into algorithms just to see if I could. I find this helps greatly because then when I'm programming, the algorithms come to me on the fly, and I simply have to fight with a language to get it to do what I want it to.
 +
 
 +
Get a copy of [http://www.linuxiso.org/ Linux] and learn the command line. Having your development environment pretty much indistinguishable from your OS has the wonderful benefit that it's simple to make a dippy little program, and try it out without waiting for some damn IDE to load. Some people can develop for Windows and like it, but I can't. (Many people prefer the unity of [http://www.bsd.org/ BSD] to Linux. Whatever blows your skirt up.)
 +
 
 +
Pick a language based on what you want it to do and then learn it. I like things fast, so I use [http://www.gnu.org/software/libc/libc.html C] a lot. For programs that don't require a ridiculous amount of computation, require complex string manipulation, or I just want to make fast, I'll use [http://www.perl.com perl]. [[User:Mpnolan|Mike]] would suggest using Python, as it's a high level object-oriented language, but in the end it's more or less equivalent with perl. Other languages available include C++, Java, Ruby, Prolog, Fortran, and Lisp (if you're a masochist). There are really quite a lot, so you should read up on them and decide which one suits your purposes best. Don't be surprised when you need to learn more than one language for different projects. It would indeed be silly to use just one language when two languages are each ideal for two separate parts.
  
==Programming==
+
Now all you've got to do is find a project that grabs your interest and start coding. You can't learn by reading and then go code. Sure you're going to be in way over your head, but it feels great when you're done and you realize just how much you've learned.
===Current Projects===
 
* [http://chrax.freezope.org/programs/c/prime.c Prime Generator]
 
* LITE ('''L'''ITE '''I'''s a '''T'''ext '''E'''ditor) - In progress (not ready to expose to the world yet)
 
  
===Help Wanted===
+
As you may or may not be aware, there are three virtues of programmers: [[laziness]], [[impatience]], and [[hubris]]. Develop them if you don't already possess them.
====Alpha Testers====
 
[http://chrax.freezope.org/programs/c/prime.c Prime Generator v.80] is out and I need people that will go out of their way to break it and send me bug reports. I'll get around to creating a makefile by v.81, but for now just <code>gcc -lgmp -Wall -oprime prime.c</code>
 
  
Also note that you'll need to change where the files are if you don't want everything in /var/log/prime/. And don't hesitate to suggest features. I can't guarantee that I'll include them, because a) I'm not all that great b) your ideas might not be all that great.
+
If you're using C, I suggest [http://www.oreilly.com/catalog/pcp3/ Practical C Programming] by O'Reilly and the [http://www.gnu.org/software/libc/manual/html_node/index.html GNU libc manual]. If you're using perl, then the [http://www.oreilly.com/catalog/pperl3/ Camel] and [http://www.oreilly.com/catalog/perlckbk2/ Ram] are your best friends. (If you do get into perl, email me, for I have obtained some outstandingly useful documentation.)
  
====Ass-Kicking Primality Test====
+
Finally, you're going to get stuck, so you need people that can very bluntly point out where you're going wrong. Usenet is an excellent place to find this. [http://news.individual.net/ Individual.net] had a good selection of newsgroups. Unfortunately, they're no longer offering their services free of charge, so I'll get back to you when I find a new news server. [http://www.linuxquestions.org/questions/forumdisplay.php?s=&forumid=9 LinuxQuestions] is great place for simple questions, but don't be surprised when about half of the answers are useless/halfassed. If you're going with perl, [http://www.perlmonks.org perlmonks], [http://www.cpan.org/ CPAN], and [http://www.perldoc.com/ perldoc] are all great resources.
Anybody that wants to take the time to look through the source of prime will see this ugly bit of C:
 
<table border="1" cellpadding="0" cellspacing="0"><tr>
 
<td><tt>
 
mpz_init_set_ui(test,3);<br><br>
 
while(mpz_cmp(test,root) <= 0){<br><br>
 
&nbsp; /* int equiv: mod = thisnum % test; */<br>
 
&nbsp; mpz_mod(mod,thisnum,test);<br><br>
 
&nbsp; if(mpz_cmp_si(mod,0) == 0){<br>
 
&nbsp; &nbsp; mpz_clear(root);<br>
 
&nbsp; &nbsp; mpz_clear(mod);<br>
 
&nbsp; &nbsp; mpz_clear(test);<br>
 
&nbsp; &nbsp; return 0;<br>
 
&nbsp; }<br>
 
&nbsp; mpz_add_ui(test,test,2);<br>
 
}
 
</tt></td></tr></table>
 
and might say "Wow, that's rather brutish, isn't there a GMP primality test or something?" and be quite justified in doing so. Yes there is a GMP primality test <code>mpz_probab_prime_p</code>, but as you might guess from its name, it returns a 1 if it's probably prime. This, frankly, isn't good enough, so until somebody comes up with a good primality test algorithm, we're sticking with the brute force method.
 
  
This is where you come in. Recently, [http://www.cse.iitk.ac.in/news/primality_v3.ps three Indians] came up with a deterministic time primality test. The problem is that I don't understand it well enough to implement it, and I don't have the time to spend on it any more. What I need is somebody who can take what they've got and turn it into a useful algorithm, and it doesn't need to be in C, it just needs to be something I can translate into C... say English or [http://www.perl.com perl]. In fact, getting this down would be so big, I expect we could submit it to the [http://www.swox.com/gmp/ GMP] guys to incorporate into a later release.
+
Anyway, hope this helped, tell me where it needs work, or if anything is inaccurate. -[[User:Chrax|Chrax]]

Latest revision as of 23:51, 29 April 2006

About Me[edit]

I was a Discoverer (Class of 2005) at the Academy. I am a computer scientist at the University of Tulsa, with a focus on security.

I am a sporadic programmer with moderate skill in perl and C. I also know Java, but I don't really use it much. I'm also interested in math and education. (I know a great deal regarding politics and religion, but the debates have lost their novelty, so it's not really an interest anymore. Besides, nothing ever changes. Anybody that participates in such debates is not going to change their mind, rendering the debate itself quite useless.)

Participate in the Rotten.com Dead Pool! And check out my profile.

Contact Me[edit]

I have:

  • A website
  • A livejournal
  • A Xanga (I don't use it a whole terrible lot.)
  • A Blogger
  • A gmail
  • A jabber account: chrax@jabber.org
  • An AIM account: chrostephir <defunct>
  • An MSN account: effigies@gmail.com

Computing and Whatnot[edit]

Advice[edit]

I have received a request for advice concerning taking up programming. Of course it's not going to work the same for two people, but I'll give you my suggestions:

I suggest coming up with algorithms (step by step instructions) for tasks that you see every day. Up until this past semester I had barely done any programming, but all the time I would break down tasks into algorithms just to see if I could. I find this helps greatly because then when I'm programming, the algorithms come to me on the fly, and I simply have to fight with a language to get it to do what I want it to.

Get a copy of Linux and learn the command line. Having your development environment pretty much indistinguishable from your OS has the wonderful benefit that it's simple to make a dippy little program, and try it out without waiting for some damn IDE to load. Some people can develop for Windows and like it, but I can't. (Many people prefer the unity of BSD to Linux. Whatever blows your skirt up.)

Pick a language based on what you want it to do and then learn it. I like things fast, so I use C a lot. For programs that don't require a ridiculous amount of computation, require complex string manipulation, or I just want to make fast, I'll use perl. Mike would suggest using Python, as it's a high level object-oriented language, but in the end it's more or less equivalent with perl. Other languages available include C++, Java, Ruby, Prolog, Fortran, and Lisp (if you're a masochist). There are really quite a lot, so you should read up on them and decide which one suits your purposes best. Don't be surprised when you need to learn more than one language for different projects. It would indeed be silly to use just one language when two languages are each ideal for two separate parts.

Now all you've got to do is find a project that grabs your interest and start coding. You can't learn by reading and then go code. Sure you're going to be in way over your head, but it feels great when you're done and you realize just how much you've learned.

As you may or may not be aware, there are three virtues of programmers: laziness, impatience, and hubris. Develop them if you don't already possess them.

If you're using C, I suggest Practical C Programming by O'Reilly and the GNU libc manual. If you're using perl, then the Camel and Ram are your best friends. (If you do get into perl, email me, for I have obtained some outstandingly useful documentation.)

Finally, you're going to get stuck, so you need people that can very bluntly point out where you're going wrong. Usenet is an excellent place to find this. Individual.net had a good selection of newsgroups. Unfortunately, they're no longer offering their services free of charge, so I'll get back to you when I find a new news server. LinuxQuestions is great place for simple questions, but don't be surprised when about half of the answers are useless/halfassed. If you're going with perl, perlmonks, CPAN, and perldoc are all great resources.

Anyway, hope this helped, tell me where it needs work, or if anything is inaccurate. -Chrax