These are all of the updates.
Friday, May 06, 2016
The first chapter of Wheels is now online! Yee-haw! That part of the site isn't really integrated with the rest at the moment (mainly because I'm intending to majorly overhaul this stuff), but it's working, I've provisionally set up Disqus powered comments, and now I really need to go eat some lunch. For those of you who don't like the yellow-on-black colorscheme, I do intend to add an option for black-on-white. I just haven't gotten around to it yet. For now, you'll just have to cope (worst case, you can always use your browser to override it).
Wednesday, April 27, 2016
Don't you just hate it when somebody says, "Things are changing. I'm going to be super productive now!" and then they fall off the face of the earth for four years? Good thing it hasn't been four years yet; that's next week. :P Anyway, I've been busy doing the whole "start a project, get 10%-40% done, then drop it and start something new" routine. Which is getting old. So far there have been three games and a book. Well, anyway, that ends now. Okay, actually it ends next week. On Friday, May 6th, I will begin posting weekly chapters of the rough draft of a story I'm writing. I won't guarantee that I'll keep the updates weekly the whole way through, but I guarantee that the story will finish in a timely manner.

Now, I don't know if anybody actually still visits this dusty old site; I see no reason why they'd bother. So maybe nobody will be reading this update. But just in case, be warned that I'm probably going to be overhauling things in the near future and eliminating a lot of old content. There's a lot of stuff on here that I thought was pretty cool when I was 17 which is just embarrassing now. So, things may be strange, ugly, and broken over the next week, and I may or may not have everything fully operational again by the time I start posting my story on the 6th. Most of my time is being eaten by actually writing.
Tuesday, May 5, 2012
Not much happened since the last post. That will be changing. I'd been working two jobs for the last year so that I could pay off my loans and build up a safety buffer. Well, I've done that, and now I quit the second job so I can spend 20+ hours a week on game development. Today was my first day of the new schedule. I spent the freed up time transferring this site to a new host, because the one I've been using has been annoying lately. Unfortunately the process of moving my site (and two unrelated forums I run) took a lot longer than I expected, so I haven't really manage to get any actual game development done. There are still a few hours left in this day, so after I make some supper I'll get on it. :) As for what exactly I'm making, I'll talk more about that in another post, once I actually have something to show. I will say that this first game is going to be single-player, probably not extremely deep, and is totally unrelated to that "Void" deal I was working on last summer. (Still intend to continue working on that eventually, and perhaps as a change of pace when I get bored with this one.)
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!
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:


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.
Tuesday, April 19, 2011
Status update on Void (the space program I'm working on): Terrain updating takes place in a separate thread now. Different regions of a planet can have different amounts of subdivision, and adjacent regions with different amounts know how to stitch themselves together without a seam (as long as it's only one subdivision different, anyway), and the asteroid-sized object has been upgraded to full planetary scale (radius of 6000 km, just a few hundred km less than Earth).

The next things I need to do are optimize the terrain updating code and to start addressing the precision problems caused by the GPU's reliance on 32 bit floating point numbers. The CPU end of the code is using doubles of course, but they just get cast to floats when they enter the GPU since the average GPU doesn't have much in the way of double support. So I'm probably going to have to use a variety of moving origin to keep the numbers from getting too massive and imprecise. Otherwise if you fly a couple thousand km and get up close to a polygon, it appears to jitter whenever you move.

On a mostly unrelated note, I just found out about the band Abney Park this week. I am now somewhat obsessed and probably will be for a good half a month :)
Friday, April 8, 2011
For the last several weeks I have been playing around with a program I started in October to get back into 3d game programming. It's eventually going to become a space fighter demo (not a full blown game) in the vein of Elite and Vendetta Online. Well, I haven't actually played Elite, but I've played Oolite which is a free open source remake with a bunch of extra features and stuff. Pretty fun.

I would like to eventually make a full blown game along the lines of this demo, but for now I'm just playing with it and finally learning more about proper OpenGL use. For example, today I finally learned how to use Vertex Buffer Objects. Pretty slick.

I've also been playing with Perlin Noise. First I implemented my own functions for fun, then I swapped them out for libnoise, which was an order of magnitude or two faster than my lightly optimized versions had ever dreamed of being.

What is Perlin Noise good for? Procedural terrain generation, texture generation, and a host of other less obvious things that you may want to create on the fly. The thing I'm mainly interested in right now is terrain generation, because I've always wanted a space game where you could fly right down to the surface and cruise through the mountains and cities and stuff. After watching the videos from Infinity: The Quest for Earth I want it even more. So I'm thinking I'll do a crude version of that as well.

I'm not very concerned with incredibly accurate terrain or anything, I just want something close enough to be fun. Before I learned about VBO I had written some crude code to generate a rough asteroid-sized object using Perlin noise, but it was pretty slow. Use of VBO should help a lot. But the next thing I need to look into is a way to more efficiently manage the level of detail in a mesh - the local areas need to be high detail while the distant ones are less. Moving around, it needs to transition quickly and smoothly enough to not be annoying. And it needs to be able to deal with going from seeing an entire hemisphere up in orbit to hovering at ground level. One essential thing will be going multithreaded so that the meshes can be updated separately from the playing. Otherwise each time a chunk of the world gets updated you'd lock up a bit. I'll probably start playing with that stuff tomorrow-ish.

Anyways, that's what I've been up to in my free time. I'm also working a second job now. I reduced the hours I spent on my first job so that I'm only doing a total of 40 hours a week. I like this arrangement so far, because it keeps me from spending 40 hours on the same thing week after week. I start my morning doing one sort of work, and spend the afternoon doing a different kind. Helps keep my attention span happy. And the better pay from the new job makes my wallet quite happy indeed. By the end of the month I should be all caught up on my bills and such and finally start making progress on paying off my loans and saving for the future.

One downside is I'm working eight hours more per week than I was before, so I don't have quite as much free time. What I'm doing is nine hours a day Monday through Thursday, and then four hours on Friday, so that I still have Friday afternoon to spend on my own stuff. Better than nothing, and right now I really need the money.
Tuesday, March 8, 2011
Been fairly busy lately. My glasses finally showed up a week ago, which was nice. Before they showed up, I was contacted by Verizon Wireless, who I'd interned with for two summers. They want me to do some contract work for them. So, since I couldn't see well enough to drive, I had to take an hour and a half bus ride to the office of the staffing company they're hiring me through, so I could do paperwork, then an hour and a half back home. Then I had to ride about two hours - as far as the bus would take me - and then walk another hour to get to the clinic for the drug test. then all that to get back home again...

But it's worth it. The additional income will be very nice, and the work will be a nice change of pace from what I've been doing lately. Not sure when we get started, probably next Monday or so. And they're in the same timezone as me, so I can work with them in the morning, then with ENS in the afternoon (I'm going to be splitting my time between them both). So I won't be living 3+ hours out of sync with the world around me anymore. That was kind of fun at first but it gets old eventually.

In other news, I did some work on Gourd - got an initial permission system set up, as well as user groups. Didn't do much last Friday though. I was going to go grocery shopping in the morning before getting started, but my car's battery had gone dead during the time it didn't get driven due to my being unable to see properly. By the time I'd walked to the store to get a charger, walked back, and gotten it hooked up, a good chunk of the day was gone. I picked up a box of folders and a stack of printer paper while I was out as well, and carrying all that home wore me out. So that Friday was a bit unproductive.

This next one should be pretty good though. I'm going to put together a basic admin control panel and user control panel for Gourd, along with a registration form. Then I can start integrating the permission support into the overall system and do some testing. That should bring it to the point where it would be theoretically usable. I'll still have a good amount of work to do before it reaches the point that I plug it in over here though, but hopefully just a few weeks. Once I have it integrated with the updates system I can swing my attention back around to either MATHoLantern Web or Musiplot.

Hmm, haven't gotten around to the nav panel update either. I forgot about that. Maybe this weekend.
Friday, February 11, 2011
Today I implemented function support in MATHoLantern Web. Both preset and user-defined functions. Support for parsing function calls turned out to be pretty simple, but it took a while to work out a good way to handle defining functions. I got it sorted in the end though. I generalized the system I used to track variables so that I could have multiple independent instances of it. Then I used one new instance to track function names, and then stuck another instance inside each function object to track that function's parameter variables.

Here is a list of the built-in functions supported:


The trig functions all use radians, and all of the above are just aliases for the equivalent functions provided by the Math Object of JavaScript. Yes, I will eventually add more, such as max/min, random, degree versions of the trig functions, etc. But that's pretty low priority at the moment.

Use of the functions is how you'd expect. For example, the following will compute the sine of pi/2 radians (90 degrees), which is 1:


To define your own functions, you just write the function name, the opening paren, the comma separated list of parameters (no default values), the closing paren, an equal sign, and the definition. For example:


The first line is the definition. In the second line, I use the force() function to find the force required to accelerate a 10 kg pizza at 4 meters per second. (It's a very large pizza.)

Names of functions are restricted to alphanumeric characters and the underscore. No dots, dashes, umlauts, etc. They are case sensitive.

The last two really core elements I need to add are vector support and graph support. Then it will be able to satisfy the vast bulk of use cases I'll have for it. So those will be the next items I work on for it. I'm not sure if I'll address those next week yet though. I might get back to work on Gourd, my forum software, instead. We'll see.

I didn't actually get around to working on the navbar any more last weekend. The optometrist that I thought I'd go to, because it was only a 15-20 minute walk, turned out to be closed. Apparently they decided to leave the sign up when they moved out. So I walked there, looked through the window at the barren room, walked home, then walked an hour to one that I knew was still alive. Then waited an hour to see the eye doctor, then walked another hour home. So I didn't feel much like working at that point. Instead I hopped on the net and ordered some new glasses. Cheaper than getting them from the store, but slower. They still haven't even been shipped. Grrr...
Friday, February 4, 2011
Haven't actually gotten around to seeing the optometrist yet. Been busy with stuff - I was going to go last Saturday but then I remembered I was waiting for a package to show up. It had actually shown up on Friday, but it was while I was running errands so I missed them. I expected them to try again on Saturday so I decided to stay home in case they showed up, but they didn't. Got it on Monday. :|

So I was going to go today, but it was raining. Try again tomorrow I guess. Otherwise I'll have to just get up way earlier than I'm used to on Monday so I'll have time to go before work starts.

Anyways, today I updated the navigation system's backend. It still looks about the same on the outside, except a couple entries might be in a different order now. But internally, the navbar is being generated automatically based on meta data stored in the individual pages. This means that I don't have to manually adjust it any time I add a new page or move something around. It will automatically correct itself.

So next I need to update the code that is generated. Until now I've always tried to use as little JavaScript on this site as possible. I think I'm finally going to stop being so anal about it and allow myself to add expanding headers in the navbar. But I'm going to design it in such a way that even if somebody has JS disabled they can still navigate to the section, and then to the individual entries.

Along the way I will have to create "section" pages, since currently the headers don't actually link to anything. I also need to take all those long pages that have multiple things on them and break them into individual pages, which will then not fill up my entire navbar.

I probably ought to start pushing an RSS feed as well. Get all modern and stuff.

Anyway, I've had enough for today. I'm going to go learn how to cook rice and then have dinner: taquitos with a side of white rice. Yep, I'm getting so advanced that I can cook two-part meals now. I am on my way to becoming a 1337 c00k3r.

Next Friday I'll be buckling down on adding functions to MATHoLantern. Meanwhile I'll start on the expandy-nav tomorrow. Cheers.
Friday, January 28, 2011
Unfortunately I didn't get as much programming done today as I had hoped. I had various errands that needed running, and some of them took a lot longer than expected. And then my glasses broke. I always save my previous pair of glasses (if they aren't broken), so I'm wearing those now. Actually, these may be the pair before my previous pair, I'm not sure. Anyway, they help. Without any glasses, I can only see about five inches before things start to blur. I'd have to have my head about a hand's length from my computer screen to make anything out. With these old glasses, I can almost see a whole arms-length away! They're good enough to use my computer, though I can't sit back in my chair. So I guess tomorrow I'll be walking to the optometrist's, if they're open on Saturdays anyway. (Fortunately it's only about a mile or so away. I know where it is so I could probably drive there with these old glasses without any troubles (despite not being able to read any signs), but I'd rather not.)

Aaaanyways, I've fixed the bug I mentioned on Monday and have uploaded the current state of MATHoLantern Web Edition. You'll find a link to it on the left, under the new "Software" header. I was hoping to have time to redo this site's navigation system this week but didn't. That will be my goal for next Friday, along with perhaps writing up pages for some of the software I made for Puppy, for historical purposes (probably nobody is interested in those old projects anymore, but perhaps they might want to look at the code as examples for their own projects). That stuff is all posted in various places within the Puppy Linux forums, but it would be nice to have it listed here as well.

But I digress. Back to MATHoLantern Web. When you follow that link you'll find a page with a header and a blank white area. If you click within the white, a cursor will appear. You can type math into it and press enter to have it evaluated. For example:


This will be evaluated and the result will be printed after the equals sign:


It understands the four basic arithmetic operations (+-*/), as well as exponents (^) and modulus (%). It can also group using parenthesis. Spaces are ignored. Floating point numbers and negative numbers are understood. The constant "PI" is also available, and will use the built-in Math.PI constant provided by JavaScript.

It does not have support for square roots (but you can just raise something to the power of 1/2 to accomplish the same thing, e.g. 9^(1/2)=3), imaginary numbers, or trig functions. Those are of course all on the list of things to add, along with support for user-defined functions.

It does already have support for variables, however. They are initialized by simply typing the name of a variable (letters and underscores only) followed by the equals sign. For example, to set the variable "grav" to be equal to 9.81, you would do this:


You can of course set a variable equal to the result of an expression, and you can change the value of a variable later on. MATHoLantern process left-to-right and top-to-bottom, just like reading a book. So if you define "grav" at the top of the page and then redefine it halfway down, everything in the first half of the page will use the first definition, and everything below where it was redefined will have the new definition.

You can use a variable by simply typing the variable's name instead of a number.

Here is an example of variables being used and redefined:



Those last two lines are the answers. As you can see, variables are set when encountered, not later. So even though we redefined the value of "grav", the value stored in "force_earth" did not change.

If you decide you want to go back and edit a line after it has been evaluated, you can double-click it, make changes, and then press "Enter" or click elsewhere, and the page will be updated. To delete a line, just edit it and erase everything and then press "Enter". Empty entries are automatically discarded.

You can move lines around by single-clicking them and then dragging them. Please be aware that drag support is a bit rough right now - things tend not to un-select after you click them, and the page doesn't immediately update to recalculate values based on their new positions (you can force it by simply clicking empty whitespace to begin a new entry, then aborting by clicking elsewhere).

You may also notice that when inputting data, everything for a short distance to the right of the cursor gets covered in white. That is due to using a standard html form element to receive the input. I intend to eventually set up a fancier input model that won't require that and will allow for fancy formatted text that looks more like how equations look on paper and less like how they look inside sourcecode.

There is no way to save data yet either. I'll probably work on that after I add support for parsing functions. Initially, I want to have two save formats: plain text and xml. Both would be able to be imported again later, though the plaintext version would lose most of the positional data (well, I could save that in an ugly header I suppose - maybe I'll have a checkbox). I will also set up an option to save it to the server so that you can access it from anywhere. That way if you're working in the lab and forget your flash drive you don't have to monkey around with network drives or emailing yourself files.

I'm not completely sold on the use of "=" for both assigning variables and asking for the value of an expression. I might wind up using something more along the lines of the ":=" that MathCAD uses, so that it is more obvious on visual inspection which values you defined and which are being output. On the other hand, I could also accomplish that goal by having the formatting render the two types of equals signs differently, or perhaps have the output in a different color. (Colors and settings will eventually be customizable and savable).

That's all for today.
Monday, January 24, 2011
Hehe, look at the dustmounds here :)

Yeah, sorry about that. But long story short: I now have my own apartment, and along with it I have adopted the four-day work week, so that I can dedicate Friday to my own projects. From now on, things will move forward rather than stalling out 25% of the way in.

My first priority is MATHoLantern Web Edition. MATHoLantern was a project I started about a year and a quarter ago, with the intention of making a free open source MathCAD-like program in Python. That stalled very shortly in, due to last spring being very busy. This last autumn, I resurrected it, this time as a webapp. The target audience is college students at engineering universities, and I know from experience that they often wind up using random lab computers. So by making it a webapp, they can use it on any computer they find themselves in front of, be it lab, library, or borrowed laptop, without having to install anything. In the long run I probably will go back and make a standalone version as well, but that is low priority.

The current status is that you can do simple arithmetic with it. The interface is fairly ugly - I haven't started on making it move things around and what-not. You also can't use functions yet. More specifically, you can't tell it to use functions. The mathematical system can handle them, but the input parsing cannot detect them. But the standard symbolic stuff (+-*/^%) works.

There is a bug that pops up when deleting entries that I need to fix, and then I will put it online for people to play with. I then plan to update it every time I work on it (so long as there are no known debilitating bugs).

I have various other priorities, but this is actually my second time typing this post - the browser ate the first one - so I don't feel very inclined to retype it all. I'll write about that stuff later.

Anyways, I'm back, and I'm here to stay this time. Well, you know, unless I get hit by a bus or shot or something like that. :)

I'll say more Friday evening. Hopefully I'll have the alpha MATHoLantern Web page up by then.
Saturday, July 17, 2010
Finally writing my forum software. I named it "Gourd" for some reason, not really sure why. I don't really have much to say about it yet. PHP and MySQL. It will have the basic stuff you expect in a forum. One thing I am doing, the lack of which has bugged me about phpBB, is setting it up so that posts can be moved into other threads. phpBB only lets you split them out of threads. Well, in the 2.x series anyway. I don't remember if 3.x added that feature or not. I'm also adding support for changing the owner of a post/thread. Those are features that generally wouldn't be used much, but could be useful under some circumstances.

I'll integrate this news system into it as well. That way "comments" could be made as just another part of the system - news posts would just be specialized threads, which the main page of my site would pull out and render a bit differently.

In other news, I finally got around to installing and playing around with ImageMagick the other day. Fun stuff. I'm going to use it to build a wall paper setting program to use in CheesyRamHog. I use ROX-Filer as my preferred filemanager and desktop-icon system. It has its own wallpaper deal, which works pretty well when you only have one monitor. It is pretty useless when you have two via Xinerama, especially when they have different resolutions. Why? It views them both as one large funky-sized screen - which is pretty much what it is, so I can't fault ROX-Filer for this. But it means that if I want to have a different image on each screen, I have to merge the two images into one by hand. So, being the lazy bum I am, I decided it would be nicer to make a small program that uses ImageMagick to do it for me. While it's at it it can also provide options to scale them in different manners. And that allows me to achieve another benefit over the normal ROX-Filer based system: ImageMagick has (limited) support for seam carving. Basically, it's an algorithm for resizing images by removing the least important pixels, rather than distorting the entire image. Sometimes it works beautifully - if there is a lot of empty space, it resizes the image by just taking bits of that out, and you preserve the full detail. Other times it fails miserably - especially if it decides the least important pixels are inside somebody's face. But for small adjustments to make an image fit your monitor's aspect ratio, it generally does a good job on many images. So it having it as another option will be wonderful.
Saturday, May 15, 2010
Hoo-ha! I am now officially graduated, with a BS in Computer Engineering. Next goal: Become a self employed software developer. I'm going to get started on that tomorrow. (Well, I've been doing part of it (contract work) since I was a freshman, but tomorrow I'm going to start working on my first piece of commercial software that I intend to sell.)

Getting some code written tomorrow will be refreshing, because I've spent the last week living out of a suitcase as I worked on getting my car running, gave up (not worth the cost), rented a U-haul, trucked my stuff up to the mountains of TN where my family now lives, and started unpacking. Today I assembled my new computer desk and got all my gear set up. Still not completely unpacked - I have five boxes left filled with books, magazines, comics, and papers (notes from classes that I saved, financial documents, etc.). Need to get a bookcase or something for them. Need to go track down a "new" car as well. Fortunately as a self employed software developer who lives with his family I don't need a vehicle immediately. But it would be really nice to have one so that I don't have to keep bumming rides from people. Asking my younger sister if I can borrow her car does not help my self esteem much. ;)

Sure feels good to finally be on the verge of being able to Get Stuff Done. No more professors and homework assignments and exams in my way. Just me and my keyboard. Oooooh yeah....
Sunday, May 2, 2010
I was talking to my dad today. He asked if I had been out partying in anticipation of graduation. HA! I wish. I don't know about other majors, but the end of your final semester is a tremendously busy time for engineering students. In your final semester you tend to be taking a lot of project based classes. So at the end of the semester you are scrambling to finish all of the final projects. Or writing the final reports about the projects. Or giving presentations on the projects. Or maybe even studying for those finals that are next week. Don't want to forget about those... Then there is all the other junk: packing, trying to coordinate with your family to get moved out within the absurd deadlines the university sets before they start trying to fine you for all you're worth (fortunately graduating seniors get a couple extra days), getting your car dusted off and street legal after not using it for four years, making posters about your senior design project to replace the ancient ones lining the hallways, finding time to go buy your cap and gown, etc.

Parties happen AFTER graduation. Before graduation, going to sleep at the end of the day is party enough.

Anyway, I forced some space into my schedule today and last Friday so I could wrap up version 0.6 of Retrovol, which fixes some bugs and finally implements balance control. Yay!

That was able to happen today because I stayed up until 3:30 AM last night writing 16 pages of documentation for my senior design project so that I didn't have to do it today (and there is still more to be done - I haven't even started on the appendices yet).

With that I am signing off to go get dinner and then return to the grind. Got a final in the morning that needs studying for.
Saturday, April 17, 2010
Not much to report. Busy, as usual. :)

It doesn't look like I'm going to get around to doing anymore major work on CheesyRamHog until after sometime after graduation. I'll still be compiling more programs as needed (the other day I finally got around to doing Mplayer, which I had sorely missed). But I don't have the time and energy to do any more on the build system for now. With graduation getting close, there are too many other things that need to be done.

As for Retrovol, the balance stuff is implemented in SVN, but I wanted to improve some handling of mixer names before I made a formal release, which I haven't had a chance to do yet. (Well, I had a few chances, but I chose to use them to get caught up on the anime and comics I read, which I had been neglecting for the last month and a half.) Hopefully I'll get that dealt with sometime in the coming week.

Speaking of comics, last night I finished reading Gunnerkrigg Court (up until the current strip), which I started the night before. Three letters: wow. (And only two of them are unique letters!)
Thursday, April 8, 2010
Tonight I released Retrovol 0.5.

Still need to add balance support. I'll start on that this weekend.
Monday, March 29, 2010
(Note: The header says this was posted Monday, but it has only been Monday for 30 minutes.)

Yeeehaaaww! Posting this from Firefox in Xorg with my dual-screens enabled and proprietary nVidia driver working like a charm. Long term, I hope to switch to the Nouveau driver, of course. I would have liked to have played with the experimental release this last weekend, but didn't have time.

Sorry about how I kind of stopped updating for a bit there. I actually tried writing two updates on Friday and Saturday, but I was writing them in Links and kept accidentally hitting the left arrow key at inopportune times (unless you are in a text box, the left arrow tells Links to go back - deleting everything I wrote in the process).

But anyways, I've been busy. Wound up getting distracted by some things, so I didn't get as much done as I'd wanted. But now I have X, GTK, Alsa, SSH, SVN, Git, Geany, ROX-Filer, and IceWM installed - along with a whole bunch of other stuff they depended on. As I mentioned, I have Firefox as well, but I didn't compile that - I'm using their binaries. I intend to compile it eventually, but I know from experience that it takes a good 40+ minutes and I was in a hurry.

I didn't quite reach my goal of being mostly migrated over by the end of Spring Break, but I did get the vast bulk of the work done to be able to migrate. Next good chunk of free time I get (Wednesday?) I'll be trying to start the actual migration. I'll want to actually compile Firefox for that, as well as Thunderbird. And printing isn't quite done - cups is in but not foomatic. And the build system still needs to be rewritten (it's been adjusted to cooperate with pufmgr, but most of it is still the old shabby system from a week ago). That one probably won't happen for a while. Amigo (author of src2pkg) sent me a modified version of pkgtools he's been working on, so I want to play with that before I do much more work on pufmgr and auto_cheese (the working-name for the automation system - it will likely have a better name by the time I get around to rewriting it, I just needed something to name the directory it was in).

School resumes in the morning (well, technically at noon, since my 9:00 class isn't going to meet again until Wednesday - and my afternoon class doesn't resume for a while too, so I guess technically I have no class this Monday, but I have a TA meeting, TA duty, a meeting with my senior design group, and a meeting with our advisor. And I have a Japanese quiz on Tuesday that needs studying for, along with homework.) The big block of free time I have in the middle of Tuesday will probably be spent getting started on (and hopefully finishing) my taxes. Which is going to be extra fun because I have to fill out multiple forms for two different states, along with the federal ones. (Due to working out of state over the summer.) But I did this last year, so it should be less trouble to sort out this time around.

Hmmm.... I think I'm just typing to waste time now. Once I post this and go to bed, break will be officially over.

Let's have a moment of silence, to mourn the passing of my last Spring Break ever (because I gradumutate in a month).


Goodbye Spring Break!! I'll miss you! *sniff*
Thursday, March 25, 2010
Today and yesterday were not quite as productive as the earlier part of the week. Partly because I had to take care of some other stuff (banking, foraging for food, studying kanji) and partly because I had to do a lot of thinking about how to handle some of the next portions. Primarily I have been thinking of the package manager and how best to implement it. I've made some good progress too, and tonight uploaded it to my git repo. I've named it "pufmgr", because the primary package format is a ".puf" file. ("puf" comes from "cheese puff")

A .puf file is pretty simple. It just sets the SOURCE_NAME variable to the name of the source archive, the MD5 variable to the md5sum of said archive, and the URLS variable to the url from which to download the source archive. Technically it only needs the SOURCE_NAME, but then you'd have to already have the source archive available locally. One-line .puf files are discouraged, and pufmgr will yell at you when you try to use one (I'll eventually add an option to tell it to shut up though). If you need to adjust the compiling process, for example, you want to compile with the --enable-dohicky flag, you can do that by setting variables that src2pkg uses (in this case, EXTRA_CONFIGS='--enable-dohicky'). It currently looks for most of the useful environment variables that src2pkg uses and exports them if they're set. So if you need to modify PRE_FIX, MAKE_COMMAND, etc. you can set those in the .puf file.

Also, as you may suspect from the name, the URLS variable can have more than one url. You can define it as an array (using either the URLS[0]=url_here syntax, or the URLS=(url url url...) syntax) and pufmgr will try all the urls that match the source name until it finds one that works.

If you need to supply a patch, you can do it with the PATCHES array. Put the name in PATCHES, and put the url in URLS. You should also put the patch's md5sum in the PATCH_MD5S array. The PATCHES and PATCH_MD5S arrays need to be in order, 1-to-1, so that the right md5sum is used for the right patch. The URLS array can be in any order, and you can have as many redundant entries as you want.

There is also support for a more complex format, the .pud. The .pud format is basically a .tar.gz'ed directory containing a .puf file (except renamed to just plain 'config') and an optional src2pkg script. That way you are able to gain much more access to the compiling process. Also, since it's in a directory, you can easily include extra stuff, like icons and what-not. Currently it would have to be installed by manually adding the code to the src2pkg script, but I intend to eventually patch src2pkg so that it can automatically include anything in the extra/ directory, via something like "cp -r $CWD/extra/* $PKG_DIR/". (The patch will be such that it doesn't automatically take effect unless you pass src2pkg a flag (which pufmgr will pass) so that people using src2pkg directly for other things don't experience weird problems.)

In case you're wondering, "pud" comes from associating the "f" in "puf" with "file", and changing it to a "d" when a directory is involved. It's similar enough to possibly be confusing, however, so I still might change it to something more distinct. Oh, and pufmgr can handle the raw directory from a .pud file, so if you're just testing stuff locally you don't need to keep rebuilding it. Very convenient if, like me, you are working on scripting a large number of packages...

It still doesn't really record any information about the package for later use yet though. That's one of the next things I need to do. But it does archive the binary package, the source package, any files it downloaded, and the .puf or .pud file. (That is all configurable.) So that information could be generated from those.

That's good enough for now. My goal for the rapidly approaching end of Spring Break is to migrate over to CheesyRamHog from Puppy, so I'm going to have to cut that corner to give myself time. Archiving the .tgz packages output by src2pkg will preserve all the information, so when I get around to the package database portion I can recreate whatever I need then. Also, Amigo (the creator of src2pkg) seems to have been working on something along those lines, so I'd like to see what he has before I go off and reinvent wheels. (I like reinventing wheels, but like I said, I want to be migrated before school kicks in and makes things more difficult.)

I started revamping my automated build system to accommodate pufmgr and that's nearly done. The codebase that handles the first phase though (hosted compile prior to chroot) needs some cleanup to better match the standards of the latter half, but I'm going to put that off for a bit. It works well enough as-is, other than a couple small tweaks it will need to have pufmgr working when the chrooted stage kicks in.

I think the next thing I'm going to work on, starting in the morning, is burning toward having a basic X + GTK environment, and Alsa too if I can manage that all in one day. Music is important!

Once I have a basic GUI system sorted and scripted, I'll go back and finish cleaning up the autoprocess some more and then try building a new one from scratch, from within this instance of CRH that I've been building all week.

Enough yakking.
Tuesday, March 23, 2010
Ha ha! It boots. I'm posting this from CheesyRamHog now, using 'links' on the commandline. No gui support yet, just basic commandline. Essentially what I have right now is the same as anybody else would get by following the Linux From Scratch process, except that I also installed src2pkg, which, realpath, gpm, bc, openssl, wget, and links, and I patched my kernel to support unionfs. But now I have the entire process of getting here scripted. So the next thing I need to do is wrap up some loose ends, split the main functions from the scripts I wrote into a separate project and turn them into the package manager, update the rest of the automation scripts to use that package manager, and then turn my loose assortment of scripts and configuration files into packages that it can handle. But I've had enough for right now, so I'm probably going to watch anime or play video games for the rest of the evening, and get started on that stuff after I get home tomorrow (assuming the good weather holds out - it was still dreary this morning, but about two hours ago it finally got nice).

"CheesyRamHog Linux" is a pretty cool name, but it's also a tad on the long side (kind of like my domain name). It doesn't acronym-ize into anything pronouncible either. So I think maybe I'll go with just "RamHog Linux" or maybe "Hog Linux" or something. Or I could mash things together - Rhogix? Hmmmm.... I'll have to think on this. I'm hesitent to give up on the name "CheesyRamHog Linux" though, porque todos estan mejor con queso.

Oh, and in case you didn't notice, I added pages last night about Multiuser Puppy and Pizzapup 1.0.5 (in the "Linux" section of the NavBar). I also uploaded the isos from those and the 3.x Pizzpups to this server and updated my links, because the mirrors I had been linking to have all gone offline.
Monday, March 22, 2010
I went ahead and implemented that dropbox I was talking about. It's in the top section of the NavBar named "Feedback". It will take you to a very crude page where you can leave me a message. I have no intention of integrating that page into the rest of my site. It will stay as it is to provide me with motivation to write a forum.
Monday, March 22, 2010
This morning I worked on upgrading src2pkg to support "make check", and it seems to be working. I'll post the patch and submit it upstream to Amigo after I've tested it some more.

I spent the afternoon throwing together a simple repository browser mostly for the heck of it (under the Linux section of the NavBar). Most of the packages I've put together for Puppy have been being hosted on this server, but I always linked to them from the forum because that's where everything happens. I figured I ought to have a way to get to them from here too. Of course, I could have just had a link to the raw directory and you could have manually moved around and stuff, but it's not very pretty. So now I have a simple PHP script that scans the directory, lists the .pet files, and can also show you more information when you click on one (size, modified date, and md5 checksum). It's still possible to navigate the raw directories without using this as well.

Also, my server has Vim, but it's an old nasty version (in particular it has no syntax highlighting and no split displays). So today I finally got around to compiling a newer version locally and uploading that into my home directory. Now things are much much much nicer :)

I'm thinking about hacking together a simple drop-box system where people can leave me comments. That would just be a temporary measure until I get around to writing a forum and adding comment support to these posts. It would be a write-only type deal from the user's point of view (as in, they can write messages, but they never are shown on the site - only I read them, and do not reply unless the user leaves contact info). That way I wouldn't have to worry too much about spam, and I could make the system much simpler more secure. Maybe I'll do that this evening. (A proper Vim makes me much more motivated, apparently.)

Lots of other work that needs to be done sometime. Besides comments and a forum, I need to make the NavBar more ergonomic, add project sections for the various projects I'm working on, make some of the older parts of the site more professional, etc. I originally designed this place when I was 16, and I was incredibly arrogant back then (had an ego the size of Iowa) and I was more focused on art than on programming. A lot of that still shows through. And the organization isn't very good either. (Don't worry, I am not going to remove the quirky weirdness that distinguishes this site from most of the dull scabs that infest the net. It will still be bright, green, and funky. :D)
Monday, March 22, 2010
Still not sure what is causing it to crash at that stage. But the crash happens after it has already successfully compiled and installed glibc, so I can just reboot, update the log file so that the system knows that glibc is done, and then fire it back up and keep going. I suspect the issue is related to AUFS and the union-jailed installation method I use via src2pkg. Src2pkg doesn't have AUFS support, so I hacked it so that it thinks it does and other than this issue it seems to work. At the moment, I intend to use UnionFS in CheesyRamHog itself, I'm just using AUFS on my host system (Puppy 4.1.2). So maybe once CRH is self-hosting the problem will go away. Otherwise I'll have to dig deeper to figure out what's going on.

Anyway, between Saturday and Sunday I have now managed to automate everything up through the end of Chapter 6 of the LFS book. So next is configuration stuff and the kernel. Once I get those done I'll be able to boot into it (though I'm going to compile at least a few more packages from the hosted environment first, namely dhcpcd, wget, and a CLI browser. Getting my package management system more fleshed out will probably be the next priority, and a requirement for that is adding some more functionality to src2pkg to be able to tap into more power without having to resort to a src2pkg.auto script quite as often as I am now.

Somewhere along the way I'll need to get Xorg compiled and scripted too. That will probably not be fun. But the sooner I can get X and the package management sorted out, the sooner I can start migrating over. I think I probably won't bother with the more interesting stuff (like ramdisks, encryption, etc.) until after I am actually using it and have most of the main programs I use working. My priority for spring break is the transition, because it will be a time consuming process (locating, compiling, and automating all of the programs I use on a regular basis). It would be hard to find time to do that in one go after school starts back up, and stretching it over several weekends would be painful.
Saturday, March 20, 2010
Spring Break! w00t w00t!

The only bad thing about spring break is that the dining hall closes, so I have to venture out and forage for food. So I did that yesterday. Now I have a good healthy supply of taquitos, pizza pockets, easy mac, and ramen. Also some yogurt and a couple flatbread sandwitch thingies that looked pretty good. Though I'm starting to realize that I didn't quite get enough for the full week, so I'll have to buy some more food when I swing by the bank later this week.

I'm working on CRH again. I have it almost to the point where it can compile and install glibc in the chrooted environment. It just finished the last attempt, which looks like it actually worked, but something seems to have gone horribly wrong toward the end. Maybe it overflowed the tmpfs partition or something, because there is data in the chroot environment that should not be there, and some things outside of it appear to be broken (when I run "df", it segfaults!). The applications that are already running seem to be fine though, so I'm able to type this. I'll have to figure out what happened in a minute.

But while I was waiting for it to finish running, I finally got around to adding a page that lets you see the old news from this site. The link is in the top segment of the NavBar.

Now that I've announced that, I need to go figure out what just happened....
Monday, March 15, 2010
I spent this last weekend working on automating the build process for CheesyRamHog. So far I have the first phase done and working (building the toolchain from a host OS) and have a good chunk of the framework for the second portion written but untested (rebuilding the toolchain and core programs in a chrooted environment). It's pretty crude still. For the second phase I'm using src2pkg to keep track of what files get installed. It took a little work to get it running that early in the build, but now it seems to work fine. I wound up having to make a couple modifications to get it to run, and I'm not sure if I added functionality or fixed a bug. I need to study src2pkg's internals some more to understand what's going on before I submit my changes upstream.

For now it's back to the grindstone though. I'm not willing to do any more on CRH until I can test what I've done so far, and won't have time to do that properly until Friday. Which is fine, because after spending the entirety of the first full weekend I've had in a while on it I'm kind of burned out.

During the week I can focus on getting caught up on my senior design project, and finally get back to work on SpiderDwarf.

Today is my birthday and so far it's a good one. I was woken up two hours early by the ROTC people jogging by my building singing about a "hi-fi radio", but it seemed so goofy at the time that I didn't mind, and there was a nice fresh breeze through the window this morning. So I'm in a good mood. Of course, spending an entire weekend hacking is always a good moral booster. (This week is awesome: First we had Pi day, then my birthday immediately after, and then St. Patrick's day two days after that. And next week is Spring Break. w00t!)

And what birthday is complete without birthday dirges?

Alright, enough of that. Time to be productive. I'm going to go dust off SpiderDwarf and then send it out to collect a bunch of spam from the Puppy Forum so I can analyze it to make proper spam-detecting rules.
Saturday, February 20, 2010
So, what have I been up to lately? Well, school of course. Taking "Internetwork Security", which is almost entirely lab-based, and relatively time consuming. Also taking "Japanese 2001", as I mentioned previously. That got off to a really rocky start, but I'm at least keeping up with everybody now. "Senior Design" is interesting - doing a DSP project about recording a clip of music, identifying the notes, and determining whether they were played in tune (we're requiring that only one note at a time is played for this - it's to be used to test the player's accuracy, not to test production music with the whole orchestra!). "Ethics in International Affairs" is as boring as it sounds. More so, actually.

I'm also still a TA for the "Embedded Microcontrollers" class that I took Spring '09. We have these boards that we build that use PIC microcontrollers. But to avoid having to mess with the PicKit programmers (saving the students some money), we have them set up so you can program them over the serial port. The professor has this custom kernel that a former student wrote, which provides that serial port programming feature along with some debugging features over the serial port. The only problem is that the program we use to interface with it is for Windows. So, being the geek I am, I wrote a simple Linux program to let me program the board. I was too lazy to implement the debugging stuff, but it lets me program, pause, run, erase, and reset the chip. It's in my Git repo if anybody is interested (though it's probably useless to you unless you have one of these boards, or are just looking for examples of serial port programming). Someday I may get around to adding the debugging stuff too. Right now I don't use the boards for much, so I don't miss it yet.

I've also finally gotten started on CheesyRamHog, my personal Linux distro. I decided to begin by going through the Linux From Scratch process, since I've never compiled Linux from the ground up before (unless you count Gentoo, but that was a much more automated process). Once I get it working I intend to put together a minimalist source-based package manager and then automate the process. Then I'll fiddle around with using newer versions than those specified in the LFS book. The next step would be to expand the list of packages it uses to include the main ones I need and their dependencies.

At that point I plan to start looking into more sophisticated package managers like Paludis, which is based on Portage but supposedly better. I'm not sure yet whether I'll go with an existing source-based package manager or just stick with my own (possibly augmented with something like src2pkg from the Amigo Linux Project). Since I'm making CRH for myself, it isn't a big deal if the package management isn't all that fancy. It just would be nice to piggy back of an existing source based system's repo so that I could focus more on the architectural work.

Architecturally (not in the CPU arch sense!) what will make CRH different from other distros is that I intend to adopt some of the things I liked most from Puppy Linux, but to expand on them and combine them with a more fully featured Linux disto. Puppy is very good in its own right, especially for newbies. But if you start really getting into the Linux mindset, certain things become annoying. Lack of the normal man system, for example. And they still have a number of cut down busybox-based programs instead of the "real" versions (for some though, the full version is there, with -FULL appended to the name). I don't fault them for this - Puppy is supposed to be small, and I feel they've made the right decisions in that regard. But I don't need a small system anymore and would rather have more power.

That said, I really like the clean modular nature that Puppy offers, and the ability to load part of the OS into a ramdisk. Being able to boot without the save file to get a pristine environment is also really cool, as is the ability to run off dang near any bootable media. I intend to have CRH follow a similar approach. One difference is that it will allow any module to be loaded into ram, including the save file. So if you use the games module a lot but don't use the word processing stuff except on rare occasions, you can specify to only load the games module into ram. (All this ramdisk useage is where the "RamHog" part of the name comes from.) I also want to have some integrated tools to simplify working with modules. I want it to be easy to move packages from one module into another, to split modules into smaller ones, and to combine them into larger ones. I'm not sure how I'll do this yet, because I haven't decided on a module format. I'll probably use SquashFS, but I'm going to first do some research on compressed filesystems that remain writable, because that would make this much easier. I do intend to let it use several different types of filesystem image for the modules though, so if you want to make one that's an ext2 image instead of being compressed, that would be supported.

Another thing that comes up from time to time on the Puppy message boards is people who request the ability to cache their changes in ram and optionally commit them to the save file before they reboot. That would allow you to test things on your running system, without messing it up if things go wrong. Several of us have made prototype Puppies that incorporate that feature (search the Puppy forum for "Groundhog Day" and you should find the main thread where this happened). That will be a core feature of CRH.

I also intend to support encrypted modules (any module, not only the save file). I will need to do some research into that area to make sure I do it right. IIRC the current best way is DM-Crypt, as opposed to the cryptoloop method used by Puppy. But like I said, I need to research this. (Yes, I will also be looking at TrueCrypt.) In a related vein, I want to have Tor support too.

Why not just upgrade Puppy to have these features? Because I'm a masochist! And I also want a system that is "easy" to recompile from source so that if I want to adjust it to use different compile flags I can do that. With Puppy, the process is not very automated. (I think some work may be underway in that regard, however, under the name "Tpup".) And really, Puppy is not targeted at me. I've used it for years because it's the closest existing system to what I want, but it's like a glove that doesn't quite fit right and becomes really irritating. Instead of taking something that wasn't designed for me and trying to twist it to my needs, I decided to just go make my own. And this way I don't have to worry about whether to maintain compatibility with the main line.

No hard feelings toward Puppy of course; it is a very good distro. And I probably will port some of the features I implement over to Puppy at some point, and would certainly be willing to help anybody else who is wanting to do so for the things I don't done. This is the open source world. We compete cooperatively. And in the CRH vs. Puppy case, there is very little competition, because they target different niches. Puppy is aimed at newbies, Windows converts, and people who just want a simple system that handles their daily tasks. CRH, on the other hand, targets people who crave power, like getting their hands dirty, enjoy the commandline, and love being different.

I'm gradually getting little bits and pieces of work done on this site too. Once I get bored with CheesyRamHog and feel like taking a break, I'll probably start writing my own forum software. Lots of good forum software out there of course, but it was written by other people (eeewwww). If you haven't noticed yet, I prefer writing things myself. More fun. And then I understand the things better. I'll probably start by adding a comment system to my posts, since I notice that letting people leave comments is the hip thing nowadays. (I am very behind the times!) Hmmm.... will need to work on that anti-spam system some more too, because my maleness needs no enhancing and my videos need no converting, so I'd rather not have that junk cluttering up my DB. Math-O-Lantern is on hold until a later date. I will finish it eventually, just have more important stuff right now.
Thursday, February 18, 2010
Whew. Been busy lately. But I finally got around to adding a "Links" page, which includes banner links to some of my favorite webcomics. (I'm considering adding an area to the main-page that shows one of them at random. The code is written, I just have to decide where to put it.)
Thursday, December 31, 2009
I've been working on Retrovol on and off for the last several months. I finally have it finished enough to tag a version and make a release, so I did.

In other news, I'm obviously still alive. Chilling out in the mountains over Christmas Break (which sadly ends a week from Sunday). Managed to pull off straight A's last semester, which was nice. I intend to do some more work on this site sometime in the next couple months, to prepare it for hosting more of my projects now that I'm phasing out of Puppy-specific development. With the bulk of Retrovol off my shoulders, maybe I'll feel more inclined. But right now I'm just kicking back and doing whatever I feel like, other than a little bit of studying up on my Japanese (I'm taking JAP-2001 this spring, and it's been about two years since my last Japanese class so I'm pretty rusty).

Pizzasgood, over and out.
Saturday, November 7, 2009
Well, it's looking like I'll never get around to finishing up that picture, so I've gone ahead and uploaded what I've got so far to the Art Page. (If I had more time and motivation I'd clean up the lines a little, make my ride's innards glow more, have some flames blowing out the edges, and add some stuff in the background. And maybe add some shading everything so it looks less flat.

But I'd rather do other stuff. Like work on my anti-spam-bot, or play VO.

Which reminds me, I never mentioned Vendetta Online here. It's a twitch-based space-fighting online game. They have a native Linux version. The game costs $10 a month unless you buy in bulk, which is about 30% cheaper. But it's pretty fun, so I've been subscribing for the last couple months. They aren't the most realistic space game out there (there are velocity caps, and if you turn off your turbo you actually slow down...) but fun none the less. Runs great in Puppy Linux, assuming you can get your graphics card running properly, which generally isn't very hard. (BTW, if you are anything like me, you will be happy to realize that one of the F keys, I think F7, lets you resize the stupidly large HUD. It looks much more serious after that.)

They do have a free trial too, good for eight hours in-game. Eight hours is plenty of time to get a feel for the game. So if you're looking for a good Linux game to play and willing to subscribe, check it out.

(In case you are one of those poor souls who uses Windows or Mac, I feel obligated to let you know that they do have versions of this for those OSes. Also, they have a Linux AMD64 version too, besides the IA32 version.)
Sunday, October 4, 2009
At long last I've finally finished Multiuser Puppy. I also documented the process for the sake of anybody who wants to go through the same process on another version of Puppy, or otherwise know what I did in great detail.

Haven't touched the drawing as I was busy finishing off the above. Maybe I'll work on it some more tonight. I need to get it done in the near future as it's a bit of a seasonal image...
Friday, September 18, 2009
Randomly decided to write some haiku today, so I now have a haiku section.

As for the drawing I promised, I'm working on it. Just got too busy for a while, between all my stuff breaking as fast as I could fix it and college finally getting into full swing. And I'm very nearly done with Multiuser Puppy (it's going slow too, for the afore mentioned reasons). I intend to have that banged out within a week or so, other than the inevitable bug-fixes.

Speaking of college, after doing a couple homework assignments in my audio engineering class, I decided they would be a lot easier to do in MathCAD. But I don't have MathCAD, and am not willing to pay for it, and not willing to go all the way out to the computer labs either. And even if I were willing to pay, they don't have a Linux version. And I don't know of any open source equivalents.

So I figure I'll just write my own. It would be extremely basic, because I have no need (nor understanding of) all the really fancy complex stuff that MathCAD can do. So I'm not doing a clone or anything. I'm not even going to implement units. I just intend to handle basic math (+ - * / log exp ln sqrt etc.) and complex numbers. So it would be like a blackboard combined with a scientific calculator. I probably won't touch arrays and graphs, but I'll think about it. They'd certainly be useful to me.

I'm considering using Python at the moment, partly to give me an excuse to learn it and partly because I suspect that it would just be a good choice for this sort of thing. Plus that way it should be pretty portable. And it will of course be open source. My goal is to basically just start the ball rolling. Bang out a basic application that can handle what I need, and try to keep the code friendly so that other people who need a bunch of fancier mathematics can pick up where I leave off and add whatever they need.

Oh, and in keeping with my tradition of using odd names, I'm going to call this program Math-o-Lantern. I figure I ought to be pretty safe trademark-wise this way, and it gives me lots of interesting logo possibilities.

Well, that's all for now. Need to go get that beauty sleep. Otherwise I'm liable to get shot (might be mistaken for a zombie or something!).
Saturday, September 5, 2009
I entered a contest on the Basic4GL forums a while back. (Basic4GL is a version of BASIC specifically designed for 3D programming with OpenGL, but it also has a number of functions for 2D stuff as well.) I hadn't used B4GL in about five years, so I decided to keep it simple and just do a basic 2D game where you control some laser turrets and some mirrors, and have to bounce the laser beam off the mirrors to hit some zombies.

It turned out okay, but I discovered that I'm not very good at designing levels for it, so the levels aren't very hard. I added a basic level editor to let other people make their own levels though. Mostly I was just doing it for fun anyway, and it was. Haven't worked on a game in several years, so it was a nice change of pace. I thought of a lot of ways to make the game a lot more fun, but I don't like coding in BASIC enough to actually implement them. So I decided to release this into the Public Domain, so that anybody can fiddle with it to their heart's content.

Download ZombieZap.zip (You need to have Basic4GL installed to run this. Also, B4GL needs to be set to run in windowed mode, not full-screen, because full-screen hides the mouse and I didn't realize that in time to add my own mouse pointer code...)

Note: Although Basic4GL is a Windows program, it runs just fine on Linux with Wine (just set it to use windowed-mode rather than full-screen). I used Linux for the entire development of this. Otherwise, I wouldn't have bothered.
Monday, August 31, 2009
I just overclocked my first computer. It is now running just short of 30% faster (went from 3.0 GHz to 3.97 GHz). I feel like laughing maniacally, but it's 2:22 AM and my roommates probably wouldn't appreciate that.

I bet I'm the only person in recent history whose motivation for overclocking his computer was to be able to better handle a text-based video game. (Dwarf Fortress has a native Linux version now, which runs great, but it was still slowing down during my last session when I reached a population of 60+ dwarves. Probably some settings I can tweak, but hey, why not squeeze that extra gigahertz from my processor while I'm at it?)
Monday, August 24, 2009
Believe me, I am still alive.
I'm doing science and I'm still alive.
I feel fantastic and I'm still alive.


Yeah, so... I wrote an interesting post. But then there was a fire drill and my session timed out, and for some reason because of how I coded the posting system here I couldn't just hit "back" and recover the text like I can in most places. Will have to look into that sometime... So, you luck out and don't have to read me babbling about whatever I babbled about. You get to read me babbling about other stuff instead, like about how I had a fire drill and lost my post. :)

Anyway, I'm mainly just confirming that I am in fact alive. And that I'm working on a goofy drawing that I'll upload sometime once I finish. And that I've avoided making new obligations for the last several months and am nearly done completing my last one, so that I'll finally be able to pull out of Puppy related work for a while to do other things. Like draw more. And learn how to play my harmonica (I can do the first ten notes or so of Mario, and not much else).

So, 'till next time.
Wednesday, March 11, 2009
Well, I thought I was about to start being very productive... And for the first two or three weeks of January I was. But then school went nuts and I've been swamped since. I have managed to severely cut the time I spend in the Puppy forum, but all that new "free" time just got sucked up by school.

One thing I've been doing in what little free time I've had is learning Git. I like it much more than SVN. After having used it a bit, I can easily see where Linus Torvalds is coming from when he compares them, though I don't feel anywhere near as strongly about it as he seems to. Very slick though. Next time I work on Project Carrot, I'm going to switch it into a Git repo. Ignoring my preference, Git is still better suited for that particular project, because I intend to do a lot of different things with the code, splintering it off into several independent experiments and then merging parts back into the main line. Retrovol will of course remain in SVN, since I'm doing that through Puppy's semi-official Source Forge repository. And unlike Carrot, it has little to gain from Git.

Spring Break is finally drawing near. If I can survive for three more days, I'll finally have a chance to catch up on my sleep. Then I plan to learn how to use autoconf and gettext with my programs, then start the next phase of development on Retrovol - adding the menus and dialog boxes, and the ability to have "views" or "modes" that change which controls are shown. I would have had this done a month ago, if not for all this danged homework.

Speaking of which, I'd better get back to work. Later.

PS. Since this site isn't living up to it's name lately, here are some others to keep you busy until I have time to be cool again:
Tuesday, January 6, 2009
Last year wasn't as productive as I'd have liked. Therefor I'm making some changes. I won't be hanging out in the Puppy forum anywhere near as much from now on. That's something I had begun implementing last summer, but I relapsed in the fall. I'm also giving significantly higher priority to my non-Puppy stuff.

Anyways, over break I did some more work on Carrot, which is the name I gave to the 3d engine I'm working on. I'm still working on the model stuff. Now there is some support for weighted animations, blending, and fadeins/outs for them. I also added support for translations (still need to do scale support sometime). Before I do much more I need to stop and hash out the framework for a more consistent API than the current mishmash. Then I need to do normals and textures and stuff.

When I get it cleaned up and all, I'm going to make a simple demo where you can fly around (on a magic carpet) and watch deformed creatures roam.

Also, one of the things I was working on last fall was learning SVN. So now I've put Carrot into an SVN repository, and for the near future that repo will be available publicly at svn://pizzasgood.no-ip.org/carrot (you of course need to be using an SVN client to use that). That way I don't have to keep copying it back and forth between my laptop and desktop when I'm traveling.

The SVN can also be viewed with a browser at http://pizzasgood.no-ip.org/viewvc/Carrot/. For now anyways.
Monday, December 8, 2008
Get ready, because this may well be the coolest idea I've ever had.

Okay, so if you're anything like me, you keep a bunch of instant ramen nearby. In my case, it's in the set of drawers to the left of my desk. But, we all know instant ramen isn't really instant enough, right? So it isn't abnormal for me to skip cooking it and just eat it raw. The problem is that I wind up with a bunch of those little flavor packages laying around. I'm a packrat, so it's hard to thow perfectly good things like those away. I mean, I don't know how much of my $0.20 went into that pack, but it's something, you know? So they build up.

Well, until now. I just cooked some popcorn and was eating it, and realized it was pretty bland. If I had any butter around I'd melt it and pour it in, but I don't. No cheese either (I'm eat most of my meals at the dining hall to avoid spending half my life shopping and the other half cooking, so don't bother keeping many supplies). Well, then I remembered all those flavor packages. And let me tell you, beef-ramen flavored kettle corn is GOOD. Now I'll never again feel guilty about eating my ramen raw.

....uh, yeah. That was one of my coolest ideas ever. No, I'm not lame. You're lame for not seeing the shear 1337ness of beef-ramen flavored kettle corn! Muahahahahahah...
Saturday, October 25, 2008
What? You thought I was dead? Nah. Just busy. The internship went great and kept me pretty busy all summer. Now lately I've been kept busy by school (taking "Electromagnetics", "Microelectronics", "Applied Combinatorics", "Lab Instrumentation", and "Computer Architecture and Operating Systems"). I've been splitting my free time between working on my model format as mentioned in my last post, and writing a volume mixer for Linux. The model thing is coming along nicely. I started that over summer, but ran into a snag with the order I was doing transforms on the skeletons when they were animated. I finally got that worked out in August or early September and began implementing support for loading animations, which I have about mostly finished now (still needs all the supporting functions, and the ability to blend multiple animations together). Haven't been working on it much for the last month though. Whenever I get around to finishing up the model support, I'll put together a demo (complete with source) and upload it. After that, I plan to start doing some of the more interesting things that I've been meaning to do but couldn't without having this engine up and running first. Like procedural generation. So at that point I might be uploading stuff here more often, finally.

As for the volume thing, that's because I have yet to see a GUI volume mixer in Linux that was worth using. Not that I've looked very hard. But Puppy Linux has gone through three or four now, and I couldn't find any good ones in Gentoo's repos while I was using that either. And I've been putting off learning GTK programming for too long anyways, so I decided to just write my own. It's comming along great. Tonight I finally reached the point where it's on par with all the other mixers I've used - it can adjust the volumes and mute anything that is muteable. And it does it with a butt-kicking retro look in the sliders. But I'm just getting started. I want it to let you pick and choose which sliders are visible, and what order to put them in. I also need to set it up so it has a tray applet that works in both JWM and IceWM, and that supports scrolling the wheel over it to change the volume, if possible. And I need to add support for the "enumerated" controls, that let you specify what is used as the input, how many channels you're using, etc. Plus, it doesn't yet have a numerical display of the volume, which I want to add. If anybody is interested in it, I'm working on it through Puppy Linux's SVN repository on SourceForge. It's called "retrovol", and currently is the only project in that repo, so should be easy to find. No screenshots or anything yet, sorry. No binary either. Gotta download the source and then compile it yourself. In Puppy that means you need to have the devx_xxx.sfs file installed. Dependencies are GTK and Alsa. The current appearance is probably temporary, and I definitely want to add a line in the (currently nonexistent) config file so that the user can change the color scheme and the size of the segments.

By the way, Pizzapup is on hold, since Barry announced he's retiring now. So I plan to focus on Puppy itself rather than Pizzapup, for now anyways. When I get retrovol done, I need to fix the dual screen support, then maybe I'll improve Unleashed or something. Actually, with respect to Unleashed I have some ideas that would make it simpler to do a long-term Puplet using it, by making it easier to upgrade it to a new base-version of Puppy. So then I may start Pizzapup back up again. But for now, sorry.
Tuesday, June 10, 2008
Good news and bad news: I am now an intern. So I get money, but I lose free time. It's a fun job though - I get to program and it's mostly for Unix (though we log in through XP... yuck). So I've been learning to use vim since most of the programming is done through ssh. It's a little different from what I'm used to, but no big deal.

Unfortunately I haven't gotten any more work done on Blocky. I didn't have the time or motivation while I was still at school, and now I'm stuck with just my laptop for the summer and it doesn't have Apache or PHP. It only has a small harddrive too, so I'm not going to bother putting those on it. Before I was hired I was working on a 3d engine I started last summer. I hadn't worked on it since summer other than to improve collision detection slightly in mid-April. The main thing I was working on this time was to add support for Cal3d models, because all it supported before wa 3ds, which don't have animation. Cal3d has skeletal animation and the ability to break a model up into separate meshes and then only display certain ones. It also lets you blend different animations together. Adding the loading and display functions worked out in the end, even with the slightly out of date cal3d documentation (They used to have explicit functions for creating objects but now use new/delete, but never bothered updating the docs. Grrr.) The problem is that I couldn't get Blender to export skeletons properly. At this point I'm ready to give up and just write my own model format. It's something I'll eventually need to do anyways, I had just wanted to use Cal3d in the mean time. Anyways, that project is mostly on hold now since I have so little time. (Nobody get the wrong idea either: I have no intention of making a kick-butt 3d engine or game, I'm just playing around. Coding a 3d engine is a very nice break from Puppy related work.)

The next project on my list is to start working on a new Pizzapup. Not at a hurried pace either. There's a good chance I won't even finish until after school starts again. I want to make it as multi-user friendly as I can, and that will take some time. I also want to work on the wireless support a bit. I don't have much hardware to test with so there's only so much I can do there, but there are definitely some improvements I could make.
Wednesday, April 23, 2008
Yeehaw! I've been working for over a month on the final project for my Digital Design Lab class. It was a group project to write an assembly program that could navigate a robot through a variable-width channel without touching walls. Yesterday was the demonstration. We ate that demo like it was cake. Yum. It was even better than the two bags of candy I ate beforehand. We came within a millimeter of the wall on the hardest part but slipped through. So now that's a big load of stress off my back. Which is good, because finals are next week so I need to make room on my back for those. :P

Haven't had much time to do anything else. I worked on the file manager for the site a little and have it mostly functionally complete (still needs newfile, newdir, and chmod abilities), but that's pretty low priority at the moment.

I did upload the final version of pcPuppyOS tonight. I personally don't care for it much, but that's mainly because I tend to be turned off by Puppies that include OpenOffice and Wine. There are quite a few improvements over the standard Puppy 3.01 though, which I do like, including a couple bug-fixes. It also has a newer and less glitchy version of Gimp, which I definitely approve of. And I really like the /etc/init.x/ directory I added. That's really handy. Whenever I get around to making a new Pizzapup, you can certainly expect to see a number of the things I came up with on this project reused there. Like the toggle menu, unless I have so many items that a separate dialog box would work better.

An interesting thing is that I believe Barry is adopting for Dingo several of the concepts I used in pcPuppyOS. Not that he got the ideas from me or anything, they're mostly just coincidences. One exception is the fix for bad shutdowns, which I did come up with and have been barking about for over a year now (though I only added the nifty timeout part back in fall or late summer). Now we won't get so many complaints about how "Puppy sux cuz it don't start again when I yanks da plug out of the wall and I have to reinstall it cuz I ignore the explicit directions for fixing it that are right above the blinking prompt in bright red and consist of running a single command..."

(Yes, some people actually have resorted to reinstalling it rather than just reading the error message. If nothing else, I guess it's a testiment to how simple and fast Puppy is to install...)

Speaking of Dingo, Barry should be releasing the final version in the not to distant future. I think I'll be starting on a new Pizzapup this summer, based on the 4.xx series, but I'm not sure yet. It depends on how much time I have and if I get sidetracked into a different project. Also, even if I do start this summer there's no guarantee I'll finish within the season. I have a lot of new ideas I want to try out, so it could take a while. On the plus side, if it takes so long that I'm still working on it when I come back to school for fall semester, there's a good chance I'll be able to also improve the xorgwizard's treatment of dual-monitors (I can't test that over summer as I probably won't have access to any dual-headed machines - gotta leave my own computer behind and just use my laptop).

Uhhgg... gonna have to start packing soon too. Yuck. That's almost worse than finals. Almost.
Thursday, March 27, 2008
Testing, One Two Three...

If this post makes it through, I'll have successfully added SSL to my security scheme. Then things will be secure enough to move on to the more powerful aspects of Blocky (the name of the CMS I'm working on).

Today and yesterdays are actually the only days I've been working on the site since the last post. I mentioned then that I was going to try out Gentoo. At the time, I figured I just mess around for a couple hours, get a start on the install, and then go to sleep and finish the next day. That didn't happen. I wound up staying up all night long fiddling with things. By morning I finally had a fully boot-able Gentoo install. It was CLI only with almost no apps. So I spent the majority of the day learning to use Portage and getting X going. Then I pretty much spent the rest of the week fiddling.

I got an extra gig of ram for my birthday, and also decided to move my TV tuner into Omnius (my main computer, the one I've been putting Gentoo on). Turns out Gentoo handles both the TV tuner and my two graphics cards (one ATI and one Nvidia) with no hiccups. Puppy 2.14 doesn't fare so well. It will handle the two graphics cards fine, which is what I've been doing all year. But when I put in the tuner, the Nvidia card stops working. I REALLY like dual-monitors, so I left the tuner in Erasmus (secondary computer) all this time. Erasmus isn't as powerful as Omnius and has no graphics card (that's where Omnius's second one came from) so he doesn't display TV very well. I don't watch it much so no big deal. He can't record at all though, which sucked. So I tried it with Gentoo and it worked fine. It also turns out that Puppy 3.xx works with them all too, so maybe I'll upgrade if I can't track down what's causing the problem. For now I'm using Gentoo.

I'll write up what I think of Gentoo later. Too much work to do right now, and I want to spend a more time actually using it (as opposed to tweaking it) before I say much. I definitely like it though. Not enough to give up Puppy of course, but it's pretty slick. If I weren't so into Puppy I'd be a Gentoo user.

So, back to work on the CMS. I've got some job interviews coming up soon, and I'd like to have it finished in case they want an example of web-related work I've done.
Monday, March 17, 2008
Hoo-hah! Browserloadofcoolness now sports an online news poster again. I can log in, go to the newsroom, and type in a nice 80x24 textarea. I can use apostrophes with no ill effects: it's, a's, 'enchilada', ''a'd'fa'df'a'f'a'f'a'f'...

And I can also hit 'enter' to make newlines, without having to mess with break tags. My code takes care of all that automatically. But the best part is I don't need to edit it locally and then upload like I've been doing since August. Now I just type in the box and hit "Post" and voila! I even have a "preview" button :)

As you can see by the above and the size of this post, I really missed my old news poster.

Along with the newsroom, I needed to code up an authentication system. That isn't quite as secure as I'd like, but it'll get the job done for now. Before I get the full-blown "edit any file I want online" part finished I'll have to upgrade it some more. Meanwhile though, all anyone could do if they cracked it is spam in the "updates" or potentially make the front page look really trippy (my custom "XML parser" doesn't support nesting two of the same type of tag, so when you try it you get some really strange effects).

Anyways, I've done enough web-dev for the day. I said before that I cleaned up my harddrives. Part of the reasoning is that I want to install Gentoo on one of them. Back when I first started looking at Linux, Gentoo was one of the distros I was seriously considering starting with. Yes, I knew it was definitely jumping into the deep end, but I didn't really care. Unfortunately, I was using a fairly slow computer back then, and was using dialup. I was also a sixteen year old kid living in a house with three other people, one of whom I had to share the computer with. So tying up that computer and the phone lines as much as I'd have had to for Gentoo or any bid distro would have been difficult. That's one of the main reasons I went with Puppy Linux instead.

Now that I'm on my own, with three of my own computers and a very fast internet connection, and now lots of time due to spring break, I figured I'd finally give Gentoo a spin. So that's what I'm going to do the rest of the night.

Oh, and I'd like to paint a map (verbally) of what I plan for the site in the near future. Right now I'm working on the administrator interface. The end goal for that is to have an online file-manager and code-editor. That will finish the work I stated a year and a half ago to recode the site. Then I need to add some pages that got lost along the way (links, archive, etc.). After that, I'm going to look at getting an easy way to access all the files I'm hosting. I've been using this place as a package repo for most everything I've done for Puppy Linux in the last year or two, but the only thing that actually has a link on the site is Pizzapup. Everything else is linked to from the Puppy Forums. So I need to integrate all that stuff better with the main site.

I also need to start teaching myself MySQL again. During the process I'll be creating databases out of random data, such as which Sonic comics I own or all my music files. The music in particular I think I'll expand on and upload to the site. I'm thinking I'll write a simple app to see exactly which songs I have and which songs are on my "wishlist". I'll be using the copy on my computer to build playlists by tagging songs with things like "fast", "happy", "funny", "driving", "grouchy", "twang", genres, artists, etc. and then searching for combinations. Sure, that's more or less what meta tags are for, but only a couple of my files have those. And since I need to learn MySQL anyways, I might as well use that instead. Besides, then I could write a program to use that database to assign meta tags to all the files.

Okay, that's enough of that. Now let's see if this new newsengine really works :D
Sunday, March 16, 2008
Good news! It's spring break now. That means I finally have time to do stuff. To start with, I cleaned up my harddrives and swapped some of them around. Then I installed XAMPP again, and dug out the site's code. Yep, I'm finally finishing the upgrade I started way back when. The keen-eyed among you may have noted that the site has had a slight face-lift. I disabled the fixed background, which was making scrolling really slow. I then modified the background image to make it tile vertically, and also scaled it a little to compensate for more modern resolutions. I also made the "hover" effect more subtle.

That's it for graphical updates for the time being. Now I'm going to start writing a new interface I can use to update the site without messing with FTP. I was going to just update the original, but I've decided to start over from scratch. It will be a good refresher since I've been away from web development for a year and a half. Most of the projects I have in mind for the next year or so will require web-related work, mostly over here on this site, so I need to go ahead and get back in the groove.

So, enough yapping! I'm going to get back to work.
Saturday, January 19, 2008
"Soon" is a relative term. ;) Really, I did intend to work on the site over break, but I just never got around to it. I wound up spending most of my time working on pcPuppyOS (that custom Puppy job I've been doing for the last five months or so). So anyways, today I forced myself to set aside some time to make some updates. Most were fixing stupid little typos I had made. I also uploaded the correct lyrics for Autobeat Airbus and moved my sad attempt at figuring them out to a separate page. That's about it for site updates today. pcPuppyOS is nearing completion though, and if the bugs I'm squishing tonight and tomorrow don't call for reinforcements I'll probably finish up my Isolinux/Syslinux mods for Talking Stick (the next Puppy community edition) on Monday. At that point, other than a couple little things I said I'd do eventually, I'll be taking a break from Puppy work to do some other stuff. For example, I really miss my old content managment system. I re-wrote the site's backend a year and a half ago, but never got around to doing the parts that let me post or edit directly from my browser. I've been doing everything via FTP for the last 18 months. :| There are a couple other little things that need work (there's no way to view the archive yet, nor to change themes). I also need to do some experimenting with collision detection and fractals in C/C++. And a new version of Basic4GL is out now that has support for functions, so I need to play with that too. And my Wacom tablet is dusty... I think I might have to decline any new jobs this semester just to get caught up with all of my projects. I did make much more than I expected for the year already, so I'll make it to summer okay.

Oh, and in case anybody cares, my handstand is getting better. I can't actually hold one yet, but I'm closer. My wrists have gotten much stronger since I started. Now I can nearly do it, I just need to keep practicing to improve my sense of balance and muscle control in my wrists/fingers.

And for the people who are curious, I did finally manage to pull off a 4.0-semester, bringing the overall GPA up to 3.84. I even managed a perfect score on my Signal Processing exam (nearly fell out of my chair when I realized it too; that class was hard). Now I'm finally taking some interesting classes, including Japanese II, Digital Design Lab, Mechanisms for Computation, and Stars, Galaxy, and the Universe. Just one non-interesting class, Circuit Analysis. But at least it's relavant.

One last thing I've been meaning to mention: My brother tipped me off on a really fun free game last year, which I finally tried out back in August and have been playing since. It's called Dwarf Fortress. Basically, you start with seven dwarves in a huge persistant world and use them to start building a fortress (usually by mining into a mountain, but you can build above ground if you feel like it). Eventually migrants will come in to bolster your population. In your fortress you set up workshops to craft things that you can use in the fortress (like doors and tables) and that you can trade with caravans from other civilizations (things like crowns and mugs). There are monsters and goblin seiges and stuff too. It uses ASCII art and has a pretty tough interface, but once you get the hang of it it's really fun, and it has an insane level of little details. And though it's a Windows game, it works nearly perfectly (other than sound) with WINE in Linux. The biggest flaw I've been able to find is that every time I play, I don't stop until 3-4 AM. Anyways, just thought I'd post about that, in case anybody actually visits my site and needs a new way to waste time. Hmmm... another thing I'm missing is a "Links" page, or I'd add this to it. One more thing for the to-do list I guess.

I need to tone down the "flashy" thing with mouse-overs on this site too. It was cool when I was 16, but now it's starting to just seem gaudy. The concept is fine, it just needs to be more subtle...
Thursday, December 6, 2007
Yo. Just confirming that I'm still breathing. Things got really busy lately. Pebble 0.9 is up on the Puppy forums. That's essentially the final version, other than fixing any bugs that come up. Otherwise I've mostly just been doing endless schoolwork. Finals are next week, then break. I'll be out of state, but I'll have my laptop and I will have internet access, so I'll update some more then, and probably write some poems or spoofs. And I'll add the actual lyrics to Autobeat Airbus, courtesy of my sister. I'm going to keep my version too though, just for kicks and giggles. Oh, and I disabled my forums again a while back. I was originally going to write my own bot-blocker, but then I got really busy and the spammers started taking over. So I'll leave it down until I get around to that bot-blocker. Now it's bed time for Bonzo, after a 40 hour day. Will update soon.
Thursday, October 4, 2007
I was feeling frustrated after doing my physics homework, so I wrote a poem. You can find it in the new Geek Poems section (which inherited the Linux Poems section). Otherwise, not much news to post. Puppy's up to version 3.0 now (haven't tried it yet), I'm chugging along on that custom project, and I've uploaded a very basic alpha of Pebble to the forums that now supports animation (but is a memory glutton at the moment, that's next on my fix-it list). I do have my dual monitor setup fixed now, and have Erasmus hooked up and network-friendly. My ability to do a handstand (or lack therof) is progressing slightly (didn't mention it here, but yes, I want to do a handstand. Eventually maybe one of those handstand-flips, but for now I just want to be able to randomly decide to flip up and walk around on my hands for no appearant reason, just to mess with people). Anyways, that's that. Now to get back to work.
Tuesday, September 11, 2007
Hey. The first couple weeks haven't killed me yet. Been really busy though. Oh, while I remember, I was mistaken when listing my classes in my last post. The "forgotten" CE course I mentioned was one I was originally going to take, but changed my mind. And those are just for this semester, not the whole year. And I did manage to fit my speakers in my room. I haven't gotten around to working on Erasmus yet though. I needed to buy a router, NIC, and several other things at first (and you wouldn't believe the problems I had with getting my debit card working again!). Now I've got all the components, but I don't have the time. In addition to homework and study, I managed to get hired to make another custom Puppy this year, so most of my free time is taken up. I will have to start working on Erasmus soon though, because I'll need him running so I can test the networking aspects of the custom Puppy I'm making.

When I finish this project and Pebble (haven't even started working on that again yet :( ) I might take a break from Puppy work to try out Gentoo, update the backend of my website, and work on some art. Along with trying Gentoo, I'm going to start learning to compile the kernel and various other things I need to know but don't about making my own distro. Yep, I fully intend to create my own, from the ground up. Not in the near future though (at least a year before I start on the real thing) but I am in the very early planning stages. There aren't many specifics yet, but it will be inspired by Puppy. Puppy is great, but it's starting to stray from what I like. After all, it tends to focus more on the new users, whereas I'm more of a power user. Pizzapup has been partially an attempt to remake Puppy for people more like me, but it would be more efficient to start from the ground up, even though it would be more work. Plus, it will be loads of fun and I'll learn a bunch. And I won't be confined by trying to maintain compatibility with the standard Puppy, or by design choices Barry makes.

Nothing against Puppy, really. Making my own distro is just the next step from Pizzapup (technically, forking Pizzapup would be the next step, but I take stairs two or three at a time so I'll just skip that part). Especially at first, this will mainly be for fun, learning, experience, and experimentation. As the project grows, it will start to become something to actually use. But I'm not going to compete with Puppy. Puppy fills a niche. My distro will be similar to Puppy in some aspects, but will fill another niche, albeit one just across the street from Puppy's. It'll be more for people who know their way around Linux and feel a little babied or restricted in Puppy. And if you're curious, yes it will run in ram (probably optionally), yes it will be multiuser (but won't bug you about running as root), and no it won't be the most secure distro in the world. But like I said, I won't be able to start the actual project for at least a year, I think. By the way, it's either going to be named or codenamed "CheesyRamHog", so if you see me use that name you'll know what the heck I'm talking about ;)

One final note before I go work on my homework: I've reactivated the forum. It's now listed under "Meeting Hall", in the hope that not blatently using "forum" in the link or url will stop at least some spam bots from seeing it. I'm probably also going to add some Pizzasgood-style modifications to that graphical password bot-blocker thing, but not tonight.
Tuesday, August 17, 2007
Well, I think I've set a personal record for long stretches with no updates. My excuse for the last two months is that I've been out of state visiting my dad on the farm. He doesn't have internet access out there. Well, I'm back now. Tomorrow afternoon I get to move into my new dorm room, which will be a four person apartment with four bedrooms, two bathrooms, a living area, and a small kitchen. That's a big upgrade from last year, when I was in a two person single room dorm, which I shared with two other people. Yep, that was three of us crammed in there. The college overbooked and packed us in like sardines, but we got a $400 discount. Also, this will be the first time in 16 years that I've had my own room, with the exception of a six month stretch seven years ago. Fun fun fun. This will be my sophomore year of college, and I'll be taking Diferential Equations, Intro to Signal Processing (I think), a computer engineering course (I forget the name), Physics II, and Japanese 1001. I might also have an on campus job, but I'm not sure about that yet. I can make it through the year without one, but it would be a little tight.

So, what have I been up to lately? Well, I mowed a bunch of hay, built a shed, saw some movies, and read fifteen novels. I also played with Blender some. I don't have anything to show from that, but I'm getting the hang of it now. I also learned how to incorporate the 3d models I make with Blender into a C++ program. I haven't learned how to use the skeletons in a program yet though. I also started on the next strip in my old comic. By started I mean I drew Zinny in the first panel and have sketchy versions of Tim and Kenny, and the rest of the panels are blank. But I fully intend to work on not only that strip, but the next two or three. I want to get that story arc finished this year at the latest.
I also have an extra computer this year, in addition to my main computer and my laptop. It's and old clunker, but it runs pretty good with Puppy in it. Actually, it's the same machine I was using before I got my latest one. I've also decided to name them all so it's easier for me to tell which one I'm talking about. So, my fast new computer is Omnius, my old clunker is Erasmus, and my laptop is Seurat. I've got some plans for Erasmus too. I'm not sure yet, but I'm thinking I'll set up an online version of Puppy Unleashed hosted on it. If I have enough room in my room, I might also bring in my big speakers and turn it into a jukebox. The Puppy project shouldn't interfere with that as long as I give everything the correct priority values.
In addition to the comic, I also want to draw some wallpapers for Puppy. I'm also thinking about making a completely original IceWM theme, but I'm not sure about that yet. I do have a slight update to the Gorilla theme I ported a while back. I've never liked the menu and taskbar I created for it, so I gave them a few tweaks. Now it looks much better, so I'll package it up for everyone sometime in the near future.
I've also made a new-school-year's resolution to write more spoofs or poetry this year.
Well, that's about all I've got to say at the moment. I need to hit the hay now while it's still voluntary.... ;)
Tuesday, March 20, 2007
Pizzapup 3.0.1 is now ready to be served. It's almost the same as version 3.0, but this one is based on Puppy 2.14 rather than 2.12. That means it has PETget support and uses the same XDG implementation as Puppy now uses. Plus it has the nicer startup script. Other than updating Firefox and using the patched Gdmap, I made very few changes. This is mostly just an upgrade to the base.

In other news, I got a Wacom Graphire 4 for my 19th birthday, so hopefully I'll be more inclined to do some art now. Actually, I've been thinking of restarting my comic.

Finaly, just so you know what I'm up to, I'm working on the web_215.sfs module for Puppy 2.15CE. When I get that done I want to start writing a bootsplash program.

Well, that's all for now. 'Til next time, then :)
Monday, March 9, 2007
Hey, I've done something! What? Well, how about made a new set of wallpapers? Check 'em out at my wallpaper page. They're the ones in the "Shining" section. They were made with The Gimp and use the famous paw print created by psr1's daughter. I just added the special effects (ie: ripples, lens-flares, coloring, crazy radioactive glow, etc.). I also included PNG versions, in case you want a lossless version (great for doing color changes or derivative works without losing quality).
But now it's 3:41 in the morning, so I'm gonna go sleep now. G'night :)
Monday, February 19, 2007
Ouch. Three more days and it would have been two months since my last update. That's a new low. Well, anyway, here's my progress report:

In case you were wondering, yes, the glasses place was open.

I'm currently taking Calc III, Computer Programming for Engineers, Physics, Intro to Computer Science, and Health. I have no English or Literature classes, so no stupid essays on Victorian women's role in society for this semester :D.

I uploaded Pizzapup 3.0 RC-1 last week. In all likelyhood, it will become the final release. There are still two days for people to find bugs though, so you never know. I added a page about it here, and stuck a link on the side-bar.

You may remember way back when I was working on something codenamed "Tajada de Jamon." It wound up stalled as I began devoting most of my time to Puppy Linux. Well, I've since revised my goal to something less lofty than "Killer 1337 do-all uber game engine." I finally started working on it a couple weeks ago, starting mostly from scratch with a couple functions retained. I gave it a new codename too ("El Queso Loco"). This time around, all development is being done within Puppy Linux (or a derivative, such as my Pizzapup). I'm using SDL, so I should be able to port it to Windows without much difficulty, but supporting sub-par operating systems like Windows isn't high on my priority list ;) Currently, I have basic movement and a simple attack implemented, along with animated sprites. It has the capability to handle several multiple characters, but I only have one set up, so he has to fight clones of himself for now. When I add some more attacks, an AI, and some more characters, I'll upload a demo. When that will be cannot be predicted. I'd advise continuing to breath normally. If you hold your breath, I will not be responsible for the consequences.

Well, that's all I've got for today. G'night.
Friday, December 22, 2006
Howdy. As you may have noticed, I have shut down the forum. I don't really need it right now, and the main people using it were spammers. Most of what I do is Puppy oriented, and can be discussed on the Puppy forums. When I start doing more of my own stuff, I'll bring them back. Until then, I can be still be reached at my webmaster at browserloadofcoolness dot com account.

I'm on Christmas break right now. I managed to come out of the semester with three A's and a B. I don't know how, especially since I was failing my Chemistry class for half the semester and had roughly a high C for most of my Calc II class. I got A's in both. The B was in the last English class I ever have to take. The other A was Intro to Computer Science, which I obviously had no problems in (been programming since seventh grade).

So between seeing my grades today and eating a bunch of cookies, I was pretty happy until just now. My glasses were smudged, so I whiped the lenses on my shirt. My supposedly "super-flexible" frame snapped in two when it got caught on my shirt. It only bent a little bit, then broke. This was even worse than my previous frames. I could bend those ones until the lenses nearly touched and they'd be fine, until one day they broke when I was demonstrating them. This pair though, I never played with (learned my lesson) and they hardly bent. My vision is so bad that I literally have my head six inches from the screen to type this. It makes the Christmas tree look pretty cool though.

I've been working on Pizzapup lately, and have the encryption working great. You can choose to encrypt when you create the file, and I made a wizard to create new files which also offers this option. It also lets you encrypt and decrypt any save-file. I also have IceWM, Rox 2.5, and Firefox set up, along with some nicer icons and GTK themes. I still have a bunch of work to do on the icons, and want to replace gxine with mplayer and xmms. I will probably add XDG menus too. There are a couple small things I need to swap around, such as using KLH's Zmixer, and the new CD ripper (just tried it on my sister's computer). I haven't made up my mind about Timidity and Gimp yet, but it's likely. I may skip the boot-splash for this version though. It needs to be edited to allow the user to enter a password for the encryption, and to choose alternate save-files if there are more than one. I'm using Unleashed for Pizzapup from now on though, so the next version will be built out of this one. That means a shorter interval between versions, and I can throw in changes that Barry makes to Puppy easier too.

I promised to upload something by Christmas, and I'll be busy all Christmas Eve, so you can expect an alpha or beta release tomorrow night. Don't expect much more than I've already done in it though, because I can't do much of anything until I get my glasses fixed. Crap, I hope the glasses place is open tomorrow...
Monday, November 6, 2006
Hah, it wasn't an entire month this time! Two days short. Anyway, I'm here to tell you that I uploaded two new poems. Actually, they're old poems that I wrote back in highschool, but I found them last weekend. They are the sonnet "True Beauty" from tenth-grade and a "reflective" poem from twelfth-grade titled "Life is Like a Piece of Chrome." That one actually has a somewhat serious message. The assignment was to write a poem reflecting on what we learned during our time in highschool, and that's exactly what I wrote. I just took the "reflective" part a little too seriously :)

As for Puppy, I'm starting on the next Pizzapup finally. I have no idea when it will be finished though, but I'm actually going to be working on it now. Starting tonight, when I will start making an unleashed package of the XFCE dotpup that Dougal recently made (kudos to Dougal, his XFCE packages are excellent). You can also count on it having Firefox, a bootsplash, rox 2.5, much improved appearances, and possibly encryption. That's all I will tell you for now. The rest is iffy at the moment, but you can expect the most unique and advanced Pizzapup yet.
Monday, October 8, 2006
Did I mention I'm busy? Another month with almost no updates. I did write a nifty linux poem (spoofed from "One Bright Day in the Middle of the Night"). I've been working on the bootsplash and released a couple alphas. I'm almost ready to put up a beta version. Then I'll start experimenting with things to include or modify in the next Pizzapup (I promised myself I'd start working by October whether I liked it or not, though I may not finish in October (hopefully will though)). I haven't made up my mind about whether I'll use xfce or IceWM (or a combination) yet. Xfce is really cool, but it's fickle. IceWM on the other hand is still cool, just not with some of the nice features of xfce. Either way, rest assured it will be a very smooth looking appearence. I'm going to work on the guts a bunch too. There is a very good chance it will support encrypted save-files. I also plan to set it up with some nicer audio software than the default Puppy (XMMS or Mplayer, probably Audacity, and Streamtuner are all all on my mind). There will be more, of course. I'm just not going to tell you yet (and much of it I don't know yet either ;) )
Friday, September 8, 2006
As you can hopefully see, I've finally gotten around to upgrading my old trees theme to work with the new site. There shouldn't be any big differences from the original, other than it's a little bigger and the background has a bigger blue chunk.

In other news, I've been busy. In between classes, I've been working on a project for someone involving making a custom Puppy and some new scripts. This project needed a boot-splash, and I had planned to make one anyway, so I sped up development on that and threw it in for free. I didn't completely finish it, but when I get done with this project I will fine-tune the boot-splash some more and releas it for Puppy in general. Other than a couple quirks, it works wonderfully.

Oh, and since I'm a Computer Engineering student, I get free access to Microsoft's Developer's Network (MSDN). Never fear, I'm still a penguin (sorry Bill). I actualy haven't used it yet, but I plan to have some fun when I get some time. And no, it isn't fraternizing with the enemy. It's recon :)
Sunday, August 27, 2006
Sorry I haven't done anything over the last week. I was busy with school. I will be pretty busy this week too. I have some good teachers though. I did find some more of my poems from last year while I was looking for my old calculus notes, so I posted them today (the poems, not notes). I also need to throw in another plug for Puppy Linux though. It is an excellent small, fast, and free linux distro, and very easy to learn. In fact, if you ask nicely at the Puppy forums, there's a good chance that I'll help you out. If I don't, someone will. It's a great place, and a great operating system. They just released version Puppy 2.03CE Office, which includes Open Office 2, a nice alternative to MS Office. I don't have that specific version, but I do use Puppy and recently installed OO. If you don't want the large size of OO, you can also use Abiword for text and Gnumeric for spreadsheets. I don't know about Powerpoint though. I need to go work on my reading assignment now, so this is Pizzasgood, signing off for the evening. :)
Sunday, August 20, 2006
Well, I'm moved into my dorm, and let me tell you, I ain't never going back home. I've got an unlimited mealplan, crazy-fast internet, and no annoying siblings. I downloaded ten megabytes in seconds. SECONDS. And if I walk three buildings west of where I am now, I get unlimited food from 7AM to 10PM. Now if only my stereo system fit in my dorm (there are three of us in a two person room, but I get a $400 discount.).
Thursday, August 17, 2006
MU thought it would be cool to stick the Puppy paw logo on a sandy wallpaper he found, so I did. See the wallpaper section for it (the sandy series).
Wednesday, August 16, 2006
I worked on the theme a little. Mostly I just put more space between and around the text. I think it made a big difference. Now I need to update the "Trees" theme and remake the theme-changer. Today I also added a new Puppy wallpaper. It's definately my favorite so far.
Tuesday, August 15, 2006
Okay, I've got the lawn mowed, the quote system implemented, and the rest of my content uploaded. Next on my list is to play with the themes and set up some forums. FYI, later this week I will be moving into my dorm at college, and next Monday I will be starting class. Fun fun fun.

EDIT: Okay, the forums are up and running. No spam allowed (I can't stand the stuff. Tastes nasty).
Monday, August 14, 2006
The news system is now functional. Next on the list is the random quotes. I should probably go eat or mow the lawn first though. I'll start putting the content back up during the next couple days.
Friday, August 11, 2006
Okay, now I have the artwork page done. Next on my list is the news system. I won't get to my news editor for a while, but I do need to get the part that displays it done.
Oh, and yes I will get my old theme (or something similar) back up. I'm thinking I'll play with them a little first though. It seems like my old "trees" theme was kinda small. I definately need more "blank" space though. As for a logo, I'll probably make a new one rather than re-use the flaming pizza. I don't know whether it will simply be a better flaming pizza or something completely different yet.
Friday, August 11, 2006
Yep, I'm back! As you can see, I'm now located at http://www.browserloadofcoolness.com/. I've got a new host too, so hopefully I won't have so much downtime. I'm still coding my new backend, so there isn't much up yet, but stay tunned! I have most, if not all, of my old stuff plus some new things to put up. I also have a bunch of time on my hands until the middle of next week when I start moving into college, so I plan to get some stuff done. But right now I need to go eat my ramen noodles :)

missing-image: /art/logos/mine/slice.svg