This page is Under Construction

[py asm bas cpp]

Python
all these require Python installed to run. Some of them were written using Python 2.4 and may or may not require version 2.4+.

ttt.py
plays a perfect game of tic tac toe, aggressively.
ljget.py
downloads the ENTIRE livejournal history for a given user. including comments. in 17 lines! :D oldest entry first.
phaldo5.py, phaldo.py, phaldo2.py, phaldo3.py, phaldo4.py
I made an efficient algorithm to create all permutations of a string. Because it was clever and I don't know if it's been done before. I got it down to 94 characters (a one-liner) (which could be smaller depending on the name of the function). phaldo.py - phaldo4.py show the history of the program, from the first implementation to how i got it down to 94 characters. Making it return only unique results (in the case where some letters are repeated) could be done by simply passing the result to set(), adding 5 more characters or 10 more for list(set()). If you pass it a one-character string it'll return the string instead of a list with one element, but I considered that good enough because you'll get the same result either way when you iterate over it or even take an index. Otherwise adding 2 characters would solve that problem, viz., '[a]' instead of 'a' at the end.
telnet.py, telnet2.py
win32 telnet host that can execute arbitrary console apps. still in development and i don't remember whether I left it in a working condition..
ircserv.py
tried writing an IRC server, but IRC clients wouldn't interact with it correctly despite its apparently correct use of the protocol, so I gave it up. (only got as far as USER, PASS, MOTD, PRIVMSG, MODE, JOIN, and PART). Does not support peers.
cdcheck.py
I can't believe I actually had to write this. It reads every file on a CD and reports bad ones. I use it after burning an ISO in Nero because for some odd reason Nero doesn't let you verify written data for an image, and it's easier to do it this way than to get half way through an intallation and then fnid out I have to burn another disk. and xcopy doesn't work with nul.
backjack.py
i made some functions that I was going to use for a black jack emulator to test all possibilities to make an optimal blackjack playing guide. i didn't get around to i because I figured the ones that are out there are probably correct. and they don't even give you enough of an edge to make money. #note to self: check if later version on MY pc.
phongram.py
finds phonic anagrams of an input word. uses the cmu dictionary or maybe some modification of it. shows a * for results where the vowel stresses are preserved.
sc.py, sc2.py
returns the list of a given string (which may be '' of course) followed by all possible combinations of characters (from a defined string), the string lengths starting at the length of the given string +1 and ending at a given value. good for password hacking or whatever. sc2.py is the same thing using a generator (you can iterate through the results without it having to store the whole list beforehand).
equation.py, eq2.py, equation2.txt
takes the julia set equation Z=Z*Z+C to five levels of recursion and outputs an equation (equation.txt) with three variables where one of the variables is a third dimension representing a line through the plane of C's. the equation can then be put into Mathematica which will then convert it to a more efficient form. the second program reads the resulting equation (equation2.txt) and converts it to a POVray-readable equation (eq3.txt) for an isosurface. i don't know if this is the version that has a weird bug in the conversion process.. if you're wondering, the resultant 3d form looks cool, but it doesn't fully render correctly. or sometimes (usually) not at all.
julia.py,julia2.py,julia3.py,julia4.py
these plot out a 3d representation of the julia set for rendering in povray point by point. The first one tries to do it using triangles, and fails. But I found out that [[False]*res]*res doesn't work, because it copies the same address to multiple rows. I just haven't bothered to fix it because I fear the program won't work anyway and it'll be too hard to debug. The second plots points, the third and fourth I don't remember what the difference is but they do what the second does only they take all the poitns *inside* the object out to make rendering faster. but they really, really need a better algorithm because it leaves vertical(?) gaps.
courierbot.py
an AIM bot i'm still working on that primarily stores IMs to people who are offline. I have no idea whether what I have so far actually works, because I haven't run it yet.
sockstream.py
a class that makes an ip socket event-driven and has non-blocking read functions and also has a non-blocking bind/listen/accept function. can connect it through the class or pass it a connection.
sockstream3.py
a simplified sockstream class that sends and receives strings whose first two bytes indicate their lengths
UnityBot.py
An IRC bot I'm working on. Most of the command set and functionality and the parameter format weren't my ideas. It's supposed to be a replica of someone else's bot in order to prove to him how superior Python is... but he seems to be against any scripting language. Requires client2.py, Pythonica2.py (modifications I made), and a few obscure modules you can find on the web.
ansitest.py
A telnet client with ANSI emulation. It doesn't quite work yet.. with advanced ansi features.
find.py
like grep, but not as full-featured or as fast.

todo: mathserver. version from my pc.

Assembly
all graphical programs work in 320x200 256 color mode.
all source files are made for NASM (Netwide Assembler).
Just because a file is a .com file doesn't mean it's a virus.
Most of these were made in 1996.

BOUNCE5.ASM, bounce5.com
bounces simultaneous lines across the screen making patterns. you'd have to see it. sometimes it's cool, it depends on the pattern. there are command keys for manipulating the behaviour of the graphics which are displayed when you exit the program. command keys ignore alternate windows keyboard layouts.
xor5.asm, xor5.com
cool effect.
BUTTSEX.ASM, BUTTSEX2.ASM, buttsex.com, buttsex2.com, buttsex3.com
shows lots of “BUTTSEX “'s on the screen and the cells change colors in a cool pattern. buttsex2 just removes the blue background parts. buttsex3.com enables all background colors and it's the trippiest of the three, just maybe a little ugly.
prime6.asm, prime6.com, prime5g.asm, prime5g.com
These are just to show off my mad asm optimization, or the true power of a modern CPU, one or the other. PRIME6 displays all the prime numbers between 3 and 65,535, in a fraction of a second, and shows the time it took. prime5g takes a filename as a parameter and will write the primes to the file (in decimal) instead. prime5g is almost instantaneous.. most of the time taken in PRIME6 is for writing to the screen. the .com file is 202 bytes and it outputs 6000+ primes so you can prove that it's not just writing from a stored list.
WICKED.ASM, WICKED2.ASM, WICKED3.ASM, wicked.com, wicked2.com, wicked3.com
i called it wicked because I made something like this in BASIC class in '93 and somebody said “wicked!” That version was more animated, though, this program goes so fast that it appears in flashes. the first one probably isn't worth downloading. the second one is fastest, but the third one has color.
PUFFS.ASM, puffs.com
makes a kind of neat effect. i just tried to randomize the seed but couldn't figure out how to do it in 1 minute so you'll have to live with the same picture every time.
MISERY.ASM, SOUND.ASM, misery.com
it used to make a cool sound via the pc speaker.. a shrill sound that would randomly vary in frequency. but now it just makes static, at least on this computer. I don't know whether I wrote sound.asm. (it's required for misery.asm.)
WACKED.ASM, wacked.com
something i got accidentally. not that great.
LINE3O.ASM, LINE3P.ASM, LINETEST.ASM, linetest.com
line3o is an optimized line drawing algorithm i made in asm. you know, back in the days when computers were slow and fast line drawing algorithms were important to people writing demos and whatnot. if i counted the clock cycles i don't remember the result, but linetest.com shows how many lines it draws in a given time. line3p was my next version of the line algorithm but it won't compile. (shrug)
DECOUT.ASM, DECOUT2.ASM
routines for printing numbers in decimal. the first one prints without commas, the second one with. linetest.asm requires hexout2.asm.
HEXOUT.ASM, HEXOUT2.ASM, HEXOUT16.ASM,
routines I made for printing numbers in hex. hexout16 is for 16-bit numbers and the other two are for 32-bit, but i don't remember the difference between the other two.
INSTR.ASM
I'm not sure I made this, but it seems like I did. it finds a substring within a string. ...efficiently.
BLAH2.ASM, blah2.com
just a weird effect. I should probably make the center-point bounce around the screen, but I'm too lazy.
THETE2.ASM, thete2.com
Nothing that great. I don't know if I wrote this. My friend may have.
pow.asm
raises a number to a power using a loop. it essentially takes 3 lines.
HTMLVIEW.ASM
I was frustrated with the slowness of Internet Explorer so I actually started to make an HTML viewer in assembler. I think as far as I got was mainly concerning screen initialization (VESA) and that part may or may not be functional.
MERRILY.ASM, MERRILY.COM
bounces lines across the screen which reflect off of an invisible word in the middle of the screen. the word could be changed to anything. uses the same command keys as the BOUNCE series but doesn't display them.
LINCON.ASM
I didn't make this, but it's required for some of these. [random number generator]

C++

julia2.exe
shows strange attractor for any place on the mandelbrot you put your mouse, real-time.
julia4.exe
shows julia set for any place on the mandelbrot you put your mouse, realtime
julia.exe
the above combined (i prefer one or the other)
2dgrav.cpp
simulates gravitic interaction among objects in 2-d space. has lots of command keys that create cool effects, etc. i didn't finish it because the freakin' gravity doesn't work right and I can't figure out why.

squares 2dgrav real-time julia mandelbrot with attractor maize conenctric circles

QuickBasic

QBTRM108.BAS
Totally obsolete today of course, but I put a lot of work into it. 1800 lines of code. It's an ANSI terminal program. Won't work without the correct version of qbserial which I don't have. I also made one in asm. it did ansi and avatar. it even had a phone book. and it would show the incoming stream of data on the bottom row zooming across. the coding was really clever. but i lost it. 1996.
2DGRAV.BAS, 2DGRAV2.BAS, 2DGRAV3.BAS, 2DGRAVR.BAS
Simulates gravitic attraction among objects in 2D space. Has some options that create cool effects. Doesn't work anymore. Don't remember the differences between the different versions. One of them needs SVGAQB10. 1996.
MSMTHNG.BAS, MSMTHING.EXE
This one actually works. I forgot the name of the game, but it starts with an M. 1995.
ZOOP.BAS, ZOOP.EXE
A game called Zoop. 1996
SPIRAL.BAS, SPIRAL.EXE
Kinda cool graphics effect.
OTELOV36.BAS, OTELOV36.EXE
Othello. I don't remember the algorithm for the computer player but I'm sure it's really simple. Works. 1995.
NIBBLES2.BAS
A hyped up version of Nibbles, the qbasic game that used to come with windows. Needs some minor adjusting with the timer calibration.. new computers are too fast for it. 1993
BINGUESS.BAS, BINGUESS.EXE
Challenges you to guess the number (either 0 or 1) that it's “thinking” of. Tells you what % you got correct and lets you know if you show indications of ESP, using some formula that's probably totally wrong. Also can average scores over many sessions. Unfortunately I didn't bother to provide a way to exit the program. But I'll compile it with debug mode so ctrl+brk should work assuming your computer isn't like this one.
GUESSND.BAS, GUESSND.EXE
Plays sounds of random frequencies and challenges you to guess the hertz. Tells you what the hertz was and the difference.
ALGERNON.BAS, ALGERNON.EXE
give it a file containing a maze in ascii and this program will solve it – *with the shortest possible route*. start needs to be denoted by S, finish by F, and walls by X's. 1995
SHAPES.BAS, SHAPES.EXE
turns a txt file into an ansi file made up of blotches of color. would have been cool back when bbs's still existed.. 1995
ANAGRAM.BAS
Just finds single-word anagrams of an input string. Needs a word file. 1995/1998
ANSIFNTN.BAS, ANSIFNTN.EXE
Displays a fountain of characters and writes it to an ANSI file. 1995
PSYCH.BAS
I started to make a bulletin board system in QB. If i remember correctly, it didn't work right. Requires qbserial. Doesn't work. Isn't finished. 1995
WID.BAS
manipulates a picture, i think a wolfenstein graphics format?, can do neat things to the color that not even photoshop does. i think. i apparently don't have enough dos memory to run it now. you can simultaneously convert all three channel into respective sets of coefficients for all three channels (9 values), that's the only thing I remember about it. 1994
BLOBS.BAS, BLOBS.EXE
creates colored blobs. 1996
EXACT.BAS
finds anagrams composed of more than one word. it's not perfect.. 1995
CHRBNC.BAS
bounces things around the screen in text mode. goes way too fast. 1995
BASE.BAS
converts a number from any base to any other base. uses double floats so the numbers can be pretty large. possible inaccuracy. there's a better thing to do this in UnityBot. I say better because 1. Python is more concise, 2. Python naturally handles integers with ludicrous amounts of digits, 3. it does decimal points and outputs the numbers in irc WITH bars over the repeating decimal portions.
TOE5.EXE
(i lost the source to this one.) Plays a perfect game of Tic Tac Toe, i.e., never loses, and takes the best chances at winning. At least that's what it's supposed to do. It's been beaten before and I couldn't find the bug.
PRIME.BAS
Lists primes or tests if a number is prime. It's pretty flawed. 1993/1995


todo: vb – lsystem