The earliest memory I have of ‘programming’ is in the early/mid 90s when my father brought home a computer from work. We could play games on it … so of course I took the spreadsheet program he used (LOTUS 123, did I date myself with that?) and tried to modify it to print out a helpful message for him. It … halfway worked? At least I could undo it so he could get back to work…

After that, I picked up programming for real in QBASIC (I still have a few of those programs lying around), got my own (junky) Linux desktop from my cousin, tried to learn VBasic (without a Windows machine), and eventually made it to high school… In college, I studied computer science and mathematics, mostly programming in Java/.NET, although with a bit of everything in the mix. A few of my oldest programming posts on this blog are from that time.

After that, on to grad school! Originally, I was going to study computational linguistics, but that fell through. Then programming languages (the school’s specialty). And finally I ended up studying censorship and computer security. That’s about where I am today!

But really, I still have a habit of doing a little bit of everything. Whatever seems interesting at the time!

Adventures in OpenID land

Today I started working on a little webapp. It’s mostly to get me back in practice writing website code, but it does hopefully have the side effect of being useful. More on that later though, perhaps when it’s actually working. In any case, the first thing that I wanted to do for this app was to set up some sort of authentication system. Since I don’t have HTTPS set up at the moment with my webhost (Dreamhost; they really are pretty good to work with and far better than my previous host) and it doesn’t really make as much sense to send passwords in plaintext over the network, I decided to go ahead and give OpenID a try.

read more...


Analyzing the dice game

Lifehacker had an interesting post today where they outlined a simple dice game where you have three distinct six-sided dice, each with a different number scheme. The neat thing was that the dice had a mutually intransitive set of win probabilities, similar to rock paper scissors. So if your opponent chooses first and you choose the die that has the 5/9 edge over theirs, you will win about 5% more of the rolls (1/18).

read more...


Wombat IDE - Two bug fixes

Two quick bug fixes:

  • Issue 196: color-set! now works correctly (previously it wouldn’t actually mutate the color object)
  • Issue 197: Automatically determine the correct semester for the upload button

Wombat IDE - OSX Dock Icon

For the longest time, I’ve been having issues with the Dock Icon on OSX. It isn’t set using the same code that works in Windows and Linux, but I think I’ve finally figured it out.

Using information from this blog post, I can use the com.apple.eawt.Application class to set the Dock Icon. It isn’t set immediately on launch, but shortly thereafter. Not perfect, but close.


Wombat IDE - Another bug fix / feature post

Additional features:

  • Since both the image and turtle libraries need the same color code, I’ve factored that out into it’s own module: [(c211 color)](http://www.cs.indiana.edu/cgi-pub/c211/wombat/docs/c211-color.htm "C211 Color API")
  • Issue 193: Opening a file on top of an empty replaces that document.

Bug fixes:

  • Fixed documentation issues with image->list, list->image,
  • Issue 187: Fixed the direction parameter to hatch to take degrees rather than radians to match the rest of the library.
  • Made links in the about dialog clickable.
  • Issue 186: Fixed the recent document manager on documents with the same name.

read more...


Wombat IDE - Vector of vector functions

Added two functions to the matrix library:

  • (vov->matrix vov) - converts a vector of vectors to a matrix
  • (matrix->vov m) - converts a matrix to a vector of vectors

Quick and simple, but highly useful for testing and display purposes.  


Wombat IDE - Updated syntax, documentation

First, a few bug fixes with the keyword lists and help links: Added a bit of code to differentiate between a normal let and a named let. Fixed for losing the syntax definitions on some systems. Also, I wrote code to generate help files for the C211 libraries. Theoretically, I should just be able to update these with future updates to the APIs: Image API Matrix API Tree API Turtle API Color API (Edit: Added 19 May after re-factoring of colors) As a side note, I’ve added two new functions to the tree API:

read more...


Wombat IDE - Help and image bug fixes

A new feature: any keyword can now have an associated hyperlink that points to the Chez Scheme API reference for that function. Just click on a function that you want help with and hit F1 on your keyboard. The link will open in your systems default browser. So far only the functions built into Petite Chez Scheme work correctly, I’ll be adding the C211 libraries as soon as I write the documentation for it.

read more...


Wombat IDE - Another round of issues

I have a new chunk of issues this time, this time with screen shots.

Updated turtle library with new names

Essentially, I’ve changed a few of the names in the previous turtle API and added a few new alias.

  • spawn has been renamed to hatch
  • split has been been renamed to clone
  • teleport! has been added as an alias to move-to!
  • turn-counter-clockwise! has been added as an alias to turn-left!
  • turn-clockwise! and turn! have been added as aliases to turn-right!

read more...


Wombat IDE - Animated turtles

Sometimes I keep going beyond the point where I probably should. In this case, I want to add an animation feature to the turtle graphics library so I just went ahead and wrote one.

These new functions have been added to the turtle API:

  • (live-display b) - b should be #t or #f to enable or disable the live display, default is #f
  • (live-delay n) - set the timer between frames, default is 0.1 seconds
  • (live-display) - is live display enabled?
  • (live-delay) - get the current delay

read more...