The Mud Puddle

Home of Jon "evincarofautumn" Purdy

Blog

Update

I live! You wouldn't know it from my level of blog activity, though.

So RIT has been absolutely insane. The past ten-week quarter has been the most intensely enjoyable experience of my academic career. I've learned so much! I'll have all of my favourite work from my art classes on my deviantART account as soon as possible.

I've also been working on the Prog wiki at every chance I get. The ideas of Prog are coming along, the syntax is growing solid and clean, and pretty soon I'll be able to start designing the interpreter in depth!

I leave you with a new adverbjective: threcond, a new type of adverbjective:

  • The pronunciation of a numeral followed by the incorrect ordinal suffix: 3nd, threcond; 1ème, premième; etc.

Prog Begins

It has taken me several years to realise that it takes several years to realise that it takes several years to learn enough to write a feasible general-purpose programming language.

Having come to that realisation, and having come to something of a head with my ideas about programming, I started Prog.

Heuristic Rendering?

Yeah, why not? Read on.

This idea has been wriggling around in my mind for a while. Say you want a really fast, really simple software renderer (3D, of course). The principal thing you must do is draw triangles. And lots of them, and swiftly. And in many different colours.

To do that, of course, a lot of people will tell you to actually draw triangles. By the scanline! Do not listen to these people. With heuristics in mind, it's possible, if not actually rather easy, to figure out the following:

  • Ignoring colouring, drawing a model generally results in a rather simple filled 2D region on the screen; and
  • Most 2D regions such as this (except, perhaps, some very special cases) can be tessellated with a significantly lower number of arbitrarily-sized rectangles than of pixels; so
  • The solution is simple: sort triangles into edge cases and non-edge cases, fill the non-edge cases with a small number of large rectangles and fill the edge-cases with a larger number of smaller rectangles, according to the preferred maximum resolution.

Since it requires the renderer to keep track of a lot of rectangles, an algorithm of this sort is increasingly memory-intensive as models have more and more edge cases. Hence it's best for rendering objects without many holes. Figuring out where the rectangles actually go is no more difficult than drawing a triangle by scanlines.

The simplest method that I have found is to subdivide a square bounding box using a quadtree. This has the benefit of being both independent of screen resolution and easy to arbitrarily limit to a maximum number of subdivisions. That and a quadtree class is ridiculously easy to implement, especially when only leaf nodes have to keep track of only a Boolean ("marked" or "unmarked") status.

I'll post code (and rewrite this crappy explanation) once I finish writing it.

Note that if no one has come up with this specific idea before me (which I'm fairly sure they haven't, even if, by my description, they have), I'll accept credit for it.


And my internet keeps disconnecting and reconnecting. It's painful to be on IM like this.

Oh, well. Dial-up sucks. At least at RIT I'll have good service.

Adverbjectives

By royal decree, an adverbjective is any word that sounds like it is or should be a word, but isn't. So far, this includes:

  • Superlative Adverbs

    Replacing -ly with -lier; e.g., happilier = "more happily".

  • Weird Adverbs

    Replacing -ly in adjectives that already end in -ly with -lily; e.g. sillily = "in a silly manner"; earlily = "in an early manner" ("She arrived earlily.")

  • Adverbs Used to Describe the Actions of Actors

    Replacing -ly with -lily; e.g., angrilily = "in a manner suggesting an angry manner"; sillilily = "in a manner suggesting a silly manner" ("He walked so sillilily that we were all convinced that he was actually walking sillily.")

  • Words that Sound Like They Should Be Words, or Could Be Words, But Really Aren't

    • cantagreenous
    • fastisio
    • adverbjective

In other news, I've accepted "their" as a genderless third-person singular pronoun. Thank you very much.

And if you ever meet a wizard, ask him to conjure a void. Then get back to me with the results.

Razor Sharp

I don't know what it is, but I've been feeling absolutely icy lately. Reality has been just plain razor sharp; for some reason I feel like I'm really living every single moment. I woke up today feeling better, more crisp, and more lively and graceful than ever before.

So I might have an adrenal disorder or a brain tumor or something like that...but hey. It's worth it.

Honesty

Really is the best policy. A lot of people don't seem to realise that being forthcoming and honest goes a long way to help forge strong relationships with people:

  • By being willing to tell people about yourself, they become more willing to open up to you, creating a bond of trust between you.
  • If you are a very private person in general, then taking the risk of opening up to one or two people—even in very small ways—makes you seem more human. You can develop very strong bonds with a person if you are the only two members of your club.
  • The more you try to be honest, the easier it gets. If you're the kind of person who usually takes a long time to get close to people, especially in a romantic relationship, then this kind of practice could help you take some initiative and be more forward.

Updates

I have been accepted to DigiPen and I'm awaiting confirmation from RIT.

I have had no new acne for two weeks after having recently made the following changes to my diet:

  • Limit dairy intake.
  • Get enough vitamins C and E.
  • Eat foods with low Glycemic Index, especially fruits and whole grains.
  • Eat honey and licorice root as natural antibiotics.
  • Avoid high-oil foods.

It's worked very well for me so far. I'd strongly recommend it.

'Tis...

...the season for using archaic abbreviations.

Here's the classic list of those things that are making me busy this season:

  • Project Org is coming along nicely.

  • Project Meld has just begun.

  • My company Web site is almost up and running.

  • I'm getting my college applications to DigiPen and RIT out of the way this week.

  • Pudding!

More to come, as always. Cheers!

It's been a while.

I have got to deal with the flood of spam comments on my front page. But I'm just so under-motivated to do it.

In any case, I know it's been a while since I've posted anything here. But with good reason, of course! Allow me to recount the tale... in HTML-via-Markdown unordered list form!

  • The organiser (code-named Project Org) has made more significant progress than most of my programming projects have in the past. This is probably due to the fact that I have motivation from outside sources, i.e., my company, Aquilo Computers.

  • I'm working on an independent film ("Infection") that will take the form of a shock-comedy musical. About vampires. Hell yes.

  • I have four art projects due this month: a coloured-pencil drawing of multiple views of a single subject (I chose a Buck knife of sorts); a charcoal drawing of hands and feet arranged in an interesting manner that creates depth; a graphite drawing (on 4 in by 24 in paper) in imitation of M. C. Escher's Metamorphoses I, II, and III; and an acrylic-on-canvas painting of a group of animals in dynamic poses (I chose arctic foxes but stylised them considerably such that they look more like arctic wolves. All of these projects will be seen on my DeviantART account on completion.

  • I broke up with my girlfriend of almost three years.

  • I love Jamiroquai! Canned Heat, anyone?

  • Molasses Disaster has two new songs, one of which will appear in Infection.

So, that's about it for now. I'll keep y'all up to date on stuff.

Cheers!

Bassist!

Molasses Disaster has a bassist now. He, the guitarist, and I are all going to get together sometime within the next week or two, so stay tuned for jam updates and the like.

In other MD news, I've created a Molasses Disaster DeviantART page on which to post lyrics, music videos, and other band-related artwork, so if you have a dA account, you should add us to your watch list.

Projects Update

Programming:

  • An intuitive and versatile organiser
  • Demos to release on The Hungarian Demoscene
  • A program for distributing binary files via text-only media.

Art:

  • Getting back into poetry by writing lyrics for Molasses Disaster
  • Writing scripts for...
  • ...short films done in Blender.

Molasses Disaster:

  • I might have a bassist!

So keep watching for that kind of thing.

Brokjen JKey]board

So IU created a Facebookj accoiunt,m and had to ediut ,m]y profuile today]m, biut UI also had to iuse thuis craz]y kjey]board on ,my] siuster's laptop,m that the cat waljked on. IUt has been extrem,ely] paiunfuil to ty]pe thuis post,m so good da]y.

Ah, le Parkour, c'est ma Vie

So I went to RIT's College and Careers 2007 overnight program, in which I learned a lot about the school's new Bachelor of Science and Master of Science degrees in Game Design and Development. So I figure that even if I'm not accepted to DigiPen, I'll still be golden at RIT.

During "social time", I was pleased to find a DDR machine, but I only spent about half an hour at it because of the long line.

I then wandered about campus for a few minutes, and was absolutely ecstatic to see a couple of guys practicing Parkour. I eagerly ran over to join them and we spent a solid hour and a half exploring the campus that's (omg!) perfect for PK. I found out that one of the guys is the neighbor of active members of PKFR, an internationally-recognised Parkour group.

So that was fun.

And speaking of Molasses Disaster, I've got a guitarist now! ^_^

Happy August

Happy August, everybody! I'm putting up an about page to let people know about myself. Whether anyone's interested remains to be seen.

I went to see Lemon Demon a few days ago at Lemonic Demonade. It took a few hours to get down to Kingston (Massachusetts), but hanging out with Niel and the Lemonati was a blast. I've been inspired to try my hand at popularising my music, using my nickname Molasses Disaster.

I have three songs written for my first album:

  • Molasses Disaster, which recounts the epic tale of the tragic event;
  • Melt Like Ice, a fun and happy reggae tune; and
  • Treme i-jar-Ame, a translation into one of my conlangs of an Italian song that I originally heard performed by Andrea Bocelli.

In addition, there is one little-known Irish folk song that I'd like to cover. I tried recording them today, but the sound quality in the kitchen (where my computer and therefore my sound setup is located) is rather...sub-par.

Hmm.

Once Upon a Tuesday

I went to the lake (read: pond) today to swim and pick blueberries with my sister and my girlfriend.

In other news, I've decided to become an internet phenomenon. My music is about as good as that of Lemon Demon. More on that later: I have to eat food now.

I Never Update

Well, I don't. I recently saw Stranger than Fiction, which was surprisingly good. My only quarrels:

  • There wasn't enough animation, though the use of some neat 2D effects (esp. at the beginning) was gold
  • I'm sorry, but I didn't want a happy ending. Like the character of Prof. Jules Hilbert, I thought it did well with him dying at the end of the story. It was necessary, for me, for the movie to move up from "good" to "excellent". With the animation point, it could have been "transcendent"
  • I didn't think that enough was done with the watch character. It just didn't communicate well enough, both with the audience and the lead, Harold.

I'm working on a bit of software called Aquilo Studio, which my company, Aquilo will offer both for free and under license. You know sol? It's being integrated into the Studio as Aquilo Studio Director, a simple and well-integrated way to automate Studio apps. We'll see where that goes.

I've recently discovered a great band, Skindred, who perform an interesting* mixture of reggae, ragga, metal, punk, and hip hop

*I hate that word "interesting". It makes people sound like Gertrude Stein. ^_^

I Like Ploobies

So I've been working on Sol a bunch lately, and to a lesser extent Tonos, although my partner on that project is in Florida at the moment, so I haven't had any input from him lately. Sol is about three-quarters complete, or I'd like to believe it is. At present all it does is chop() a source file into raw tokens, cook() those raw tokens into valid tokens by determining their grammatical function, and--almost--determines the grammatical function of a series of tokens and transforms it into a parse tree. There's no evaluation quite yet, although if I make the parse tree builder correctly then that should be relatively easy.

Anyway, a bunch of sol documentation is getting up. Because it's totally aroused by my sexy coding. ^_^ See sol for a list. Red links don't exist yet. Yet.

Cheers!

Silly Programming Stuff

My more-than-a-toy operating system, SensoryOS, is rapidly becoming worthy of being called an "OS" (and not just a "bootsector"). Current features include:

  • Reliable and semidescriptive error messages when the kernel can't be loaded
  • A not-so-implemented file system, SensoryFS
  • A bunch of VGA functions (e.g. printc, prints, clear, etc.)

As for my other project, Scarab... well, blah. I'll get around to it. As it is it's got a few bugs that have pissed me off enough to make me not want to work on it. That and the fact that it's been about 37°C for the past few days. Ugh.

The first game to use Scarab, Miminy, will be released on the 31st of September of the year two thousand and whenever.

And w00t, my first devblog entry.

Happy New Year!

It's been one wild ride since... er... five months ago. I guess I'll tackle the programming issues first, then we'll see where I ramble from there.

The Programming Stuff

Scarab is now called Tonos and it contains a great many improvements, though it's only about halfway complete. It now supports basic 3D!

Miminy is shelved but another game, Ithiel, is in the works, and Miminy will return eventually.

I'm getting back into esoteric programming languages and a new, good (finally) language might appear soon.

SensoryOS is shelved but I continue to come up with new ideas for it.

Personal Stuff

My girlfriend and I celebrated our two-year anniversary in November.

I got a Wii as an early Christmas present on—you guessed it—the 19th of November. I waited eight hours in the cold to get a voucher that entitled me to wait another two hours for the store to open so that I could pay $250 for a video game system. I must be crazy.

I learned how to crochet and made myself a green scarf. It's warm. Hooray.

I joined the Japan Club and Gay-Straight Alliance and rejoined the Improv Club at my school, so I've been rather busy with those. This month in Improv we'll be doing stage combat, which ought to be fun; I'll write all about my exploits as they happen.

A New Language

All right, I've got a new language planned for 2007, and this time I'm going to finish it! (Why doesn't that sound convincing yet? ^_^)

I finally have all the requisite knowledge and skills to do this in a reasonable amount of time by myself, so I thought I'd do it for both the fun, learning experience, and community value of it. The basic tenets of this language, named Sol ("Simple Objective Language") are that it should be:

  • Lightweight (with a very small executable size)
  • Interpreted (i.e. read, tokenised, lexed, parsed, and evaluated at execution time)
  • Easy-to-use (with sane-yet-still-useful magical symbolic operators)
  • Powerful (capable of any task already assigned to existing programming languages)
  • Fast (quick-to-load, quick-to-execute, and quick-to-exit)
  • Safe (with varying degrees of highly-specific security options and exception handling)
  • Sexy (because what's a language that isn't beautiful?)

Note: Since I've already started making this, it's already under license, and that license is the GPL.

Lightweight

The interpreter will be made in C++ making heavy use of the Standard Template Library to save space; ideally, the executable will be below 1MB in size. The language will be extended through both dynamically-loaded libraries and "packages" written in Sol.

Interpreted

The function of the interpreter is to open a Sol source file, split the stream of characters therein into raw tokens. These raw tokens are parsed for grammatical function and passed on as fully-fledged tokens to the parser, which determines their relationship to surrounding tokens and produces a parse tree. This tree is evaluated to produce the final execution of the Sol program.

Easy-to-use

The language will use intuitively-organised symbolic operators and a few English-based keywords that will be subject to a friendly, built-in internationalisation system.

Powerful

With a rich standard library and a decent core, any language can be as powerful as the giants.

Fast

The Sol interpreter will make heavy use of the STL to get things done and done quickly, with speed comparable to existing interpreted languages.

Safe

With a built-in access system that restricts or allows access to different classes of objects at different points during runtime and rich exception-handling support, Sol should be one of the safest--yet still most nonrestrictive--languages in existence.

Sexy

You will crap your pants with glee when you see the syntax. ^_^


If anyone wants to help with this project, I'd be glad to accept ideas, feedback on early releases, help writing a standard library, etc. All contributors will of course receive due credit. I'll organise and post a bunch of ideas in various wiki entries and index them on the main page for those interested.