Browser Load of Coolness
Welcome to Browser Load of Coolness. This site is the product of Pizzasgood. Pizzaswho, you ask? Well, the short answer is that I'm a hyperactive 23 year old guy who likes a little bit of everything. I program, draw, snowboard, read, bike, camp, build computers, and make websites. I can even cook chicken cordon bleu in a campfire (yummy). This place is where I put any cool stuff I make, do, or find. It's also kind of a portfolio. If you feel like hiring me to do something, feel free to drop me a line. I could always use a little more dough. :)
Random Blurb
If there are starving people in China, why are you making ME eat this food?

Updates
These are the last 5 updates. To see the rest, visit the archive.
Sunday, November 13, 2011
Been busy with boring life stuff, haven't really done anything worth mentioning here. I have however made a very nice discovery. SMath. It's a freeware program that is like Mathcad. Freeware, but not open source (which might be why I didn't find it back when I was searching for a Linux equivalent to Mathcad). I just found out about it tonight. Haven't really used it other than a quick test, but it seems pretty slick. It will definitely be useful to me in the very near future. Oh, and as you may have guessed by the fact that I'm talking about this program at all, it does have a Linux version.

So, as far as I'm concerned, this means I can remove the MATHoLantern project from my todo list, as it would just be redundant. I might still extend it enough to handle simple graphs, just for fun.

Like I said though, I've been busy with boring life stuff. Been doing some extra contract work lately so that I could afford to start buying the computer engineering equipment and supplies that I have missed since graduating from college. The oscilloscope is still in transit, but the func generator and the power supply are already here. Ordered a whole mess of misc. components from surplus stores the other day as well, so when those arrive I'll be able to populate my parts bins. I'm also going to start building a workbench tomorrow, since I don't actually have anywhere to work on this stuff at the moment (other than my computer desk, which is already too crowded). That will be fun.
Wednesday, September 28, 2011
Achievement unlocked: Create Music!
confident_cruise-0.2.ogg
You can copy that file all you want, play it in public, etc., so long as you don't use it for commercial things.

It's pretty rough still, and a bit shorter than I'd like, but it's the first original music I've ever created, so I'd say it's pretty decent. As I learn more I'll make it better.

I've flirted with making music for years, but never really found a method that fits with me, other than just humming and such. Until now!

Enter musagi.

It's similar to a midi sequencer, but rather than midi it is a synth, and is oriented toward retro music (though it can do more modern stuff as well). The guy who made it, DrPetter, also makes retro games. The program has this down-to-earth feel compared to all the midi-sequencers I've played with, probably as a result of being created by a game developer rather than a musician.

It was originally a Windows program, but there is now a Linux port with most of the functionality. That isn't published on the website though, but if you poke around a little in the forum you find the link:

https://bitbucket.org/stqn/musagi-stqn

There is a pkgbuild for it in the AUR already, so I was able to get it compiled, installed, and running very quickly.


DrPetter has a tutorial on his website for using musagi, so I went through that to get a feel for using it, and then I started over from scratch and created the file I linked to above. It's fairly similar to the tutorial song in terms of techniques used (no big surprise), but has a pretty different feel to it I think. Lots of rough edges of course, and like I said, it's shorter than I'd like. The end just sort of happens. But it's a great start for somebody with no musical training beyond one year in band in elementary school and one year in choir in middle school. And one helpful tutorial.

So I figure I'll play with musagi some more, and poke around online reading more about music theory and composing, and I could probably become pretty decent. Certainly I can become good enough to create my own music for any games I want to make. Don't know if I'd be interested in a career in music if I managed to become good enough - more likely I'd spend part of my time programming and part of my time making music. But that's getting way ahead of myself! Dream big, dream early, but stay awake, I say. Right now, it's just a fun hobby that I finally managed to break into, so I'm just excited. And I'm a DIY guy, so being able to make my own music gives me that DIY buzz. Anybody who gets a kick out of building their own stuff instead of paying the man knows what I'm talking about.


DrPetter has made some other neat programs as well. The only one I've actually used is sfxr, which is actually how I found out about him and musagi in the first place. Sfxr is a simple little tool for creating sound effects, like the pew-pew of a blaster.


Regarding Void, I can shoot stuff now. I can't hit anything yet, because there is still no collision detection (I'm working on it). Before I could do collision detection I had to rewrite some chunks of the code, to create a Mesh class, and update the Model, Model-OBJ, and VBO classes to reflect that. Now that that's done, I can start on collision detection proper. I'm going to start with just bounding spheres so that I can get some collision-handling code into the Projectile class, so that I'll be able to tell whether I'm "hitting" things. Then I can work toward collision meshes.

At some point I will probably take a break to add music and sound effect support :)
Sunday, September 11, 2011
Not too much to report. I've spent most of my time reading or gaming lately, though I did finally get back into the programming mood this weekend. I grabbed a simple wavefront obj loader library and added some model classes to Void so that I can have actual models now. I also started on a projectile class, and added a "sector" class to contain arrays of all objects that need to be updated/rendered (up until now they've been handled individually). So next time I work on it I intend to finish the projectile class and add a binding to my joystick trigger for it so that I can shoot at stuff. The next step will be collision detection and adding a model to the ship. Possibly adding armor to the ship class as well, if it doesn't already have it. I don't recall. Once that's done I can spawn some "NPC" ships to shoot at. Of course, there is no AI yet so they'll just be static targets, but it will give me a way to make sure it works.

I should probably get a screen recording program sometime so that I could post some videos of this. It's nothing amazing, but it would be nice to have for posterity I think.
Tuesday, July 26, 2011
Yo. So, as expected, my brother got better and everything is fine now. Since my last post, I did some visiting with family, helped my mom and co. move, replaced my alternator, upgraded my computer (new mobo, new gfx card, new cpu (now have a quadcore with virtualization support, yay!), new monitor), and of course did lots of game playing, reading, anime watching, etc.

I did work on Void a bit here and there, improved the tessellation code, broke things, fixed things, fixed things some more after I upgraded from SFML 1.6 to 1.99.git20110709-1, and finally got board with the terrain stuff, so I'm taking a break from that now. Did pretty well for my first time at terrain generation, VBOs, and automatic mesh subdivisions and lod type stuff, but the current state of that portion of the code is not pretty. It needs to be mostly thrown out and rewritten from scratch now that I have an idea of how this stuff actually works. But as I said, I'm board with that now, so it will wait for later. It's pretty tangential from the main goals here anyway.

So, I've disabled that stuff and will now be focusing on collision detection and model support, and then will be working toward NPC ships and combat. Lots of stuff left to learn in this project. :)

Meanwhile, FYI, the Humble Indie Bundle 3 has just come out. It's a pay-what-you-want deal where you get five games, DRM free, for whatever price you want to pay them. All five games support Linux, Mac, and Windows.
Friday, April 29, 2011
Last weekend I worked on optimization. I made a couple smaller changes that helped a little, but then I remembered that the vertex generation code was comparing the coordinates of every new vertex against the existing ones to see if it was new, otherwise it reused the old one. They were held in a simple unsorted linear array, so for every vertex that was generated it needed to compare it against every single existing vertex (stopping short if it found a match). Obviously, that does not scale well at all. So what I did was store the vertexes in an octree instead, which reduces the search from an O(N) operation to O(N^(1/3)) operation. That is huge. I have been meaning to get some counts of the total number of vertexes being dealt with, but keep forgetting. But let's say I have 10,000. Before, adding the 10,001st vertex would have involved 10,000 comparisons, assuming it was a unique vertex. Now, it would take around 22. The cubic root is mighty :)

So, now terrain generates very quickly, as that vertex comparison had been the bottleneck before (I verified this via profiling). While I was at it, I also adjusted subdivision logic to be based partly on the angle between a face's normal and the vector from its center to the viewer. That helps to increase detail in areas where variations would stand out more and reduce it in areas where they are less noticeable. I still need to adjust it to consider smoothness as well - large flat planes don't need many subdivisions no matter what angle you view them at, and with the current algorithm they get many when you are low to them, off to the side a bit.

I also need to address the issue of joining regions that differ by a number of subdivisions greater than one, as the above change makes those situations more frequent, so that holes in the mesh are rather more frequent than I'd like now (of course, any holes are unacceptable in the long run, but it's not productive to try to perfect things that are greatly in flux). I started on that, but then realized I'd made an oversight which would cause the algorithm I was using to make pretty wonky lopsided triangles. It would have worked still, but I'd rather have things be more even. So, lots of work to do on that still.

That stuff was all last weekend. I will not be very productive this weekend, as my brother is in the hospital. He's going to be okay though. I'm just not in the mood for sorting out meshes and stuff, and of course will be spending a good chunk of time keeping him company.


missing-image: /art/logos/mine/FlaminHotPizza.png