| Critters in the Far East |
[23 Jun 2008|01:10pm] |
|
你好 (ni hao) to my new listeners.Apparently, my music's shown up on a search engine in China somewhere, and my server access logs show that people in China have indeed been downloading my music. I'm giving it away for free, so that's not the problem — hey, I have an international audience now — but am I wrong to be worried that it's going to show up in some bootleg video game somewhere without my name attached?
|
|
| Just thought I'd do this... |
[17 Jun 2008|06:55pm] |
Since it seems to be going around again, I did the "what states have you visited" thing:
( Read more... )
|
|
| Science! |
[06 Jun 2008|04:48pm] |
Sorry I've been so scarce lately, but I've had a project to work on that's been demanding most of my attention. Now that it's basically done, though, I can share some of the drama and excitement of the past few weeks.
So, a few months ago during our usual reading-group meeting, Prof. Lane brought up a few interesting open questions he'd been thinking about. One of them in particular caught my interest (especially because my current project at the time - one that's been back-burnered since then - was going mostly nowhere), as well as the interest of our resident visitor from the math department. The question involved approximating functions - lots of things are too obnoxious and complicated to compute exactly, so finding a good quick-to-compute approximation to them is often useful.
The two of us played around with ideas for a while, rediscovering a lot of things that were already known, but making progress toward our goal. Then came the announcement of the deadline: to have our work considered for an upcoming conference, it'd have to be in by June 6th, 6 PM (actually June 6th at 23:59 UTC, according to the conference website, which works out to be 6 PM here). This kicked us into high gear, and on Monday my partner and I met to finalize the data we'd gathered and come up with an outline for the paper. The paper was going to be my responsibility; my partner had his own paper he was submitting to the same conference on a related topic, so it was only fair for me to take the burden of the work here. However, the code we were using had a bug in it - one that we didn't catch until just this morning, which caused a lot of scrambling around and stressing out over our main result possibly being invalid eight hours before the deadline. Miraculously, though, the fix for it was simple (note to future programmers: never divide something by 2 to the 1369th power, even if that's mathematically the correct thing to do, because the computer will just say "screw it, it's too small to worry about, it might as well be zero"), and we were able to recompute our results. Not only that, but they turned out much more sensible and promising than the slightly odd plot we had before (where adding more data somehow made the approximations less accurate). So after this last-minute realization, I fixed the paper up with the new results and it's been submitted to the conference.
Prof. Lane told me that they have about a 10-15% acceptance rate, so I shouldn't get my hopes up too high, but I think what we pulled off here is pretty dang impressive, so I'm proud of my work, anyway.
|
|
| (Computer) Science! |
[03 May 2008|04:32pm] |
I just thought I'd write about this semester project; the eight of us in the research group who're taking it as a course for credit have all had to do a bit of original research in the spirit of the papers we've been reading all semester, and, since it's my turn to present my results on Monday, I've been working these past few days on getting something working. So here's what I've been doing.
( Machine Learning under the cut )
Meanwhile, in the research I'm actually getting paid for, there's been a bit of a breakthrough this past week as I, Prof. Lane, and Eduardo (our resident mathematician) sat down and put our heads together to figure out a problem that we've all been wondering about. There might be a paper in this if we can hash something out that works. I think I'll be the one to do the actual code; Matlab seems a natural choice for this particular case. This particular problem is something I want to post about later too; I've got an idea for a sort of Ian Stewart or Martin Gardner-style "math story" to explain just what the problem is and a bit about how we plan to attack it.
|
|
| Eigenstuff |
[26 Apr 2008|07:06pm] |
So - two things. First is my spiffy new icon; this more resembles what I actually look like. The old one is something like four years old now, and - well, hey, color.
The other is a bit of news about my academic career. A month or two ago, I learned that a man named Paul Cohen was applying for a senior faculty position in our department. He has an extensive background in educational software, and I thought it would be a perfect opportunity for someone like me, who loves both education and programming, to get away with writing a game as my dissertation (along with lots of results about actually trying it out in schools and seeing how well people learn and so on). This didn't happen; he accepted a job somewhere else. However, this news wasn't as bad as it could've been, because shortly before I found out about this, something else came up that started me thinking about slightly more abstract things I'm interested in...
My advisor brought up, in our reading-group meeting on Wednesday, a different application of a problem that he's been interested in for a while now - the problem of approximating functions on graphs. A graph, in CS (and math) parlance is basically a connect-the-dots game; there are nodes and edges connected in some arrangement, and this can represent anything from the atoms and bonds of a molecule to the people and connections involved in a social network. Graph theory is an entire branch of mathematics devoted to these things, and machine learning uses quite a lot of graph theory - we use graphs to represent variables with causal relations between them, or sometimes we're trying to learn something about a whole category of graphs.
Now - a function on a graph is just an assignment of numbers to each node of the graph, which is a simple enough concept. But, often, you've only got an incomplete assignment; you only know what some of the numbers are, and you want to make an educated guess at the others. You could just guess at random, but that wouldn't get you anything useful. Instead, it's better to make a guess that satisfies some constraint, like smoothness (which I won't define technically here, but it's just like it sounds - no sudden jumps). Finding these approximations lets you fill in the holes, and figuring out how to do this the best possible way is the issue here.
As for my own research - the space of all possible graphs can itself be thought of as an incredibly huge graph (infinite unless you put some constraint on the size of the individual graphs you're looking at), with connections between them if they're related somehow - like if they look the same apart from a single edge being there in one and not in the other. So... what if we're trying to approximate a function in this massive new space? The nice thing is that the structure of it is very regular; the graph of all graphs is totally independent of what any of the individual graphs mean. It's a universal object. And that, more or less, is what I'm looking at studying for my dissertation.
|
|
| Just sharing a link... |
[19 Apr 2008|10:30pm] |
|
This is the house I grew up in (it looked like the 'before' picture then). My parents still live there, as you can see from the article.
|
|
| Patchfountain! (Critters Game mini-Update) |
[02 Apr 2008|05:36pm] |

...In other words, I got a simple particle system working (first try, too - go me). This is going to be useful; a lot of sections of the game depend on nice-looking flowing liquids (like, say, Fala's stage, which makes heavy use of water), and approximating it with circles looks good enough for a world that's supposed to be digital anyway.
|
|
| Critters update |
[29 Mar 2008|10:36am] |
Yes, I'm working on the game again; I put the animation engine aside for now (I'll figure out how to handle that when it comes; Patch herself looks decent in motion, and that's all I'm worried about animation-wise until I have a need to add the other characters in). Instead, I finally managed to fix most of the collision detection and handling bugs, which means that I now have working moving platforms, a staple of the genre. Well - mostly working, anyway; Patch seems able to just walk on through the bottom right corner for some reason, and they're inconsistent about whether or not they collide with walls. Sometimes they do, sometimes they don't, and I don't know why this is. They shouldn't, though.
Trapping Patch between a moving platform and a wall causes her to clip through one or the other, pushing her instantaneously out the other side. I'm not sure this is the right thing to happen; if Critters is going to be sort of like a side-scrolling Myst - no combat, no death, just lots of puzzles and exploration - then it seems like it would make more sense for the platform to just stop, so I'll have to work out how to make it do that.
|
|
| Now it's official (??) |
[19 Feb 2008|05:39pm] |
So, in passing today as I was leaving campus, Lourdes (the administrative head of the department) called me into her office so she could give me an envelope that had my name on it. It's the official "you passed the comps" letter; I've known I passed for a while now, but I'd only heard verbally. So now I have it in writing. The amusing thing, though, and the reason I'm making this post, is one of the sillier typos I've seen - the middle of the letter reads:
I am happy to report that you have passed the Department's comprehensive exam. ??
Just like that, with the question marks. I asked Lourdes about it, and her response was basically "Yeah, I know - it just happened on yours for some reason, and we didn't catch it until they were all printed. Don't worry, though, it doesn't mean anything." So no harm done. It just looks a little goofy is all - as if it's saying "You passed. Wait, what?"
|
|
| Critters semi-update |
[08 Feb 2008|10:23am] |
|
Remember when I took some time off from the game to write a map editor? It was well worth it in the end, and I ended up with a general-purpose editor that I can now use in all kinds of projects (assuming I still want to use the same file formats and everything, but I made them general enough that I see no reason to change them too much). Well, I'm about to do it again, but this time for character animations. I've had this idea for how to handle them floating around for a while now and I think it's about time I did something with it. So there won't be any game-related updates for a little while, but the next time you hear from me about it, I'll have something to show off that'll be worth seeing...
|
|
| White Sands |
[03 Feb 2008|10:09am] |
So, to celebrate my passing the comps, I took a day trip yesterday down to the southern end of the state. My route went south on I-25, then cut east on highway 380 to Carrizozo, south on 54 to Alamogordo, then on to White Sands National Monument where I spent a few hours, then drove to Las Cruces for dinner, and headed back up I-25 to home.
The first part of the trip - from home to White Sands went pretty well and without incident. I noticed, off to the east as I drove down highway 54, what appeared to be a shiny mountain in the distance. Now that I look at it on a map, I think it was Sierra Blanca Peak - the top was covered in snow, but somehow the sun was hitting it just right that it looked like a layer of slushy plastic over the mountaintop. Very strange, but not the strangest thing I'd see that day.
I put together an album of photos I took at White Sands - they (and their captions) tell the story better than I could here. It's a very weird place. There are a few things that happened that I didn't get photos of - kids sledding down the sides of the dunes (this works surprisingly well even on dry loose sand instead of snow), and some "graffiti" people had drawn into the sand. It's sand, of course, so anything that happens to it will be erased in a few hours.
Las Cruces, on the other hand, was a disappointment. The road to Las Cruces goes through more stunningly odd scenery - the pass at San Augustin Peak has one of the weirdest profiles against the sky I've ever seen. I got into Las Cruces and found the restaurant - a Pizzeria Uno. The only one in the state, and one of the ones remaining after most of them mysteriously died off. The chain must be under new management determined to kill it, though, because the food was nowhere as good as I remembered it being. I'm going to have to learn to make good Chicago-style deep dish pizza myself, I think, because there's nowhere in the whole state to get it (as far as I can tell). It was greasy enough to leave my stomach unsettled on the whole drive home, requiring me to stop at gas stations every so often to use the restroom. I was tired enough after the trip that I decided to just crawl into bed and save the obligatory LJ post for the next morning - and here I am.
|
|
| Critters Thought |
[01 Feb 2008|12:46pm] |
Just something I thought of last night... Why do I need collision detection at all? This is a puzzle game. This isn't about Patch jumping from one platform to another (though there'd certainly be sections like that) - the Critters game is about switches and gadgets and blocks doing things in response to what other blocks are doing. Patch isn't dodging bullets or bouncing on enemies, she's flipping switches and triggering state changes and generally tweaking the world around her until things work like they're supposed to. Blocks work. Switches work. Everything else is just a generalization of those, so why do I even need the added complexity?
I think I may leave sophisticated physics to the sequel and, for this first game at least, concentrate on getting Patch and her world straightened out. If any of you have played Knytt, you know the sort of thing I'm going for - more puzzles than Knytt, though, and less of an emphasis on exploration (though her world is certainly very explorable). The next thing I need to do, I think, is build levels and see just what this code is capable of.
|
|
| Comps Results |
[31 Jan 2008|03:20pm] |
So... I've passed. All three sections cleared. I haven't gotten the official word yet, but this was apparently decided last night (along with all the other comps-takers' scores), and I just found out this morning. This is something parallel to getting a Masters' degree - I need to talk to Lynne and ask what it'd take for me to get a MS just so I have the ability to put it on my CV and say I've done it. Next step is the dissertation proposal, which is where I present my ideas for what I want to do over the next several years to my professors. And then it's time to give something back to science - I'm no longer just a grad student. I'm officially a researcher now. I've passed the ordeal, I've gone through my initiation, and I survived.
Meanwhile, in Critters land, progress has been stalled lately by my own confusion about writing a physics engine. I can't get collisions to resolve anything like the way they should, and without that ability, it'll be awfully difficult to write a platformer. So I've turned to a library called SlickSet - it sits on top of Slick, which is what I've been using for graphics, and provides collision detection and simple physics and such. This means, of course, I'll have to rip out another big chunk of code and replace it with things done the way SlickSet expects them to be done, but it'll be worth it in the end. Everything else should work just the way it used to - doors, switches, terminals, and all that. Once that's in, then I can get down to the more serious task of creating the stages and the gadgets they'll need to work.
|
|
| Done |
[18 Jan 2008|01:38pm] |
And that's that, I suppose - all three sections of the comps are now complete. Today's test was like Monday's, but with less memorization and more math. More creative problem-solving - the kind of things where you doodle around with solutions for a while until something clicks and makes you go "aha!". I know for certain I didn't get them all 100% right - as I was on my way home I realized I'd made a slight mistake in one of them - but I feel pretty good about how well I did. The setup was "choose 5 of these 7 questions to answer", and I did end up changing my mind a few times about which ones to answer when no ahas were forthcoming (for the record and my own future reference, I ended up doing 1, 2, 4, 6, and 7). I was, again, first to finish, but the guy sitting across from me seemed to be done at the same time. All in all, this wasn't terribly difficult - just tricky.
I think I'm going to take myself out to dinner to celebrate - probably to Japanese Kitchen, which is where I tend to go when I have something I don't mind spending 20-odd dollars celebrating over dinner. It's a local teppanyaki place (a la Benihana), and the food's good. Until then, I'm just going to relax and enjoy this state of complessness.
|
|
| Two down, one to go... |
[16 Jan 2008|04:26pm] |
Ugh. That really could've gone better this morning, but there wasn't much I could've done about it. The test questions ranged from difficult to downright unfair; many of them were about things that we never covered in the classes I took to prepare for it. Apparently there's another class, on compilers, that would've helped me as well, but that one was always listed as optional. What's more, this test was easily head-and-shoulders more difficult than any of the past exams in the same topic that I'd been able to download from our department web site. The end result was that I thought I was well-prepared, and I would've been if the test had been along the lines of the past ones.
Nevertheless, I think I did decently. Whether I did well enough to pass that section I dunno, but I'm sort of more curious about how well I did relative to the other guys who were in there with me. I was first to finish again, but it took me until about 2:00. I have no idea how far along the others will have gotten. It may be the case that none of us pass this section of the exam, but that seems a bit remote. Thinking about it - they would've all had the same problem with the test as I did.
I won't find out the results for another week and a half. Friday is the Theory exam, which is easily the one I was most worried about going into this week, so I need to spend some serious time studying for it (more than I already have). All I can really do now is hope I did well enough on these past two sections to pass them, and do my best on the last one.
|
|
| One down, two to go... |
[14 Jan 2008|01:09pm] |
The Systems final was this morning. In fact, it's still going on as I write this; it doesn't technically end until 5 pm. That's a way-generous time limit, though, for a test as long as it was - I finished it in a bit over 2 hours, and there's really nothing staying longer would've gotten me.
The test had three sections to it - a short answer where you choose 3 out of 4 questions, a medium-length answer where you choose 2 out of 3 questions, and an essay question (likely the only one on the whole comps series of exams) which was my choice of two. My reactions went something like this:
Short answer: "I can do this one, I can... sorta do this one, I think I know this one... I have no clue what this fourth one is."
Two of the questions were nearly identical to questions I'd seen in the class I took last semester, so that helped a bit. The fourth one was some obscure Ethernet-related thing I'd never seen before, so I was happy to be able to skip it.
Each Medium-Answer question was actually 4-5 sub-questions all related to a single theme; the two I answered were about TLBs (translation lookaside buffers, which is how your computer pretends it has more memory than it actually does and makes it all work) and journaling file systems, which are both things I reviewed yesterday, so no real problems there (apart from having to give a hand-wavy answer or two). The third question was about deadlock, and it involved remembering specific details that I just couldn't remember.
The essay section was, no doubt, the hardest. My choices, as they appeared to me at first, were "read this really long question" and "write about TCP congestion control". After a brief moment of panic (I really didn't remember the details of the TCP paper we read), I decided to read the long question instead (about how to detect if a program is running inside a virtual machine or not). It was something I'd been interested in when we went over it in class, so I answered that one as best I could. In a nutshell, it was "Here's a way things can go wrong, design a way for it not to happen. Also, think up at least two more ways it could go wrong and design ways around those, too". I needed a minimum of three good examples, then. I got two and then ran out of ideas, so I'm hoping for partial credit on the two kind of half-baked paragraphs I stuck on the end. I mean, they work as answers, but I'm really not sure they're relevant to the question at all.
Overall, I think I passed this part of the exam. It's not my strongest field and it's something I have little-to-no use for in my research, but it's all part of the process. Today, I'm going to relax a bit, and tomorrow I spend brushing up on stuff for Wednesday.
|
|
|
[12 Jan 2008|05:05pm] |
It's nearly time for the comps - they'll be occupying almost all of my time and energy over the next week or so. I've been going to review sessions over the past few days, and although I do still have weak spots, I have enough time before each of the three sections of the test that I'll be able to do some reviewing. Here's the way I've come to think about them.
Monday is the Systems exam. This covers low-level operating-system-related topics like virtual memory, file systems, distributed systems, memory consistency models - it's all very practical and real-world, which means it's mostly about memorization. There's a whole lot to memorize, much of it esoteric things I'll never need to know again, and there's no way to figure most of it out from other principles. It's the most engineering-ish of the three sections, and although it's the one I came into grad school knowing the least about, it's also widely considered the easiest. I have a bunch of papers I want to review, and the exam starts at 9 AM, so I'll be making sure to get enough sleep tomorrow night and getting myself a good breakfast. Lunch is being provided by the CSGSA (CS Grad Student Association), so they'll know exactly what we're going through. The exam ends at 5 PM, but going by the length of previous exams, it probably won't be taking that long.
Wednesday is the Languages exam. This has the same relationship to knowing a bunch of different programming languages as linguistics does to knowing a bunch of different human languages - helpful, but not really what it's about. This is a test of logical reasoning, delving into the semantics of just what a programming language -does-, and exploring other ways than the conventional "here's a list of stuff to do" model of a program. There's always one or two questions there about Prolog, which is a language where you give it instead a list of facts and inference rules (like "if X is Y's brother and Y is Z's father, then X is Z's uncle"), then query the whole system (so, for instance, you could ask it for a list of everyone in the database with an uncle-niece/nephew relationship). This is the one I feel most confident about; the most relevant class to it is one I took last semester and did fairly well in.
Friday is the Theory exam. This is about the mathematical underpinnings of computer science - proving that things are possible or impossible (or, more usually, possible but Obnoxiously Difficult - proving things NP-complete is something I need to master), as well as knowing how to come up with algorithms for a variety of purposes (and then proving that they'll work), and being able to work in pretty advanced ways with probabilities and matrices (hooray for eigenvectors). If Systems is about memory and Languages about logical reasoning, then Theory is about intuition and creativity - making leaps to connect seemingly unrelated ideas together, then going back to say just why and how your idea works. That one's on Friday, and it's the exam I feel least comfortable doing, just because there's a tremendous amount of mostly-unrelated things to know. Intuition and creativity are good things to have, but you also need a good palette of ideas to build new ones out of. But I'll be ready for it by then - I'll have to be.
After that - assuming I pass - I will no longer be merely a grad student. I'll be an actual researcher - still taking classes, but just because they'll be things I'm interested in (and because higher enrollment numbers help the department). I've already signed up for a class in Quantum Computation. Without the stress of "this is something you must know to pass this looming exam eventually", I think it'll be a lot of fun, so I'm looking forward to post-comps life. Until next week is over, though, it's nose-to-the-grindstone cram time.
|
|
| 2008: Year of the Critter |
[31 Dec 2007|05:07pm] |
So... my laptop died last night in an unrecoverable sort of way. I took it apart and put it back together again, and nothing I did could revive it - whenever I'd start it up, it would just sit there, processor fan whirring, screen blank, totally unresponsive. The same laptop where all my game development stuff was, among other things. This could've been disastrous, but the hard drive was still intact.
Today, I went out and bought myself a new laptop - a MacBook. I hooked the old hard drive up via a USB enclosure, installed a thing to let me read the Ext2 filesystem it had on it, and I just copied all the files off it, including everything related to the game (I also have it backed up in a CVS repository, so it wouldn't have been a total loss, but even so, there were other things on that drive that I need). I've decided to make the following two resolutions for 2008:
1. I'm going to finish the first game in the Critters trilogy. 2. I'm going to use my creative side to make back the money I paid for this laptop.
I think it's time I got more serious about this whole thing; I don't expect to be able to make a living off it (that's what the Ph.D. is going to be for), but it's a very satisfying hobby, and I want to share my imagination with people (especially if I can get something for it in exchange). I'll keep posting updates here as things happen; expect the lamppostisland.com web site to have something more than just an intro page on it in the near future.
|
|
| Holiday Doings |
[26 Dec 2007|05:57pm] |
So - I hope everyone out there in LJ-land had a nice holiday; I spent Christmas Eve with my family, where we feasted on Italian beef sandwiches - Chicago-style, which is hard to find outside the Chicago area unless you live somewhere near Buena Park, CA - and since practically all of my family down here not only grew up near Chicago but live down in Orange County, it makes perfect sense that we'd spring for something like that. Gift-wise, the most interesting thing so far has been in my stocking; little packets of spices I've never heard of. Should be fun to find uses for those. I also decided it was high time I had a passport, so I took the first step today - a drive down to Norwalk to the LA County Records Office for an authorized officially-embossed copy of my own birth certificate. Tomorrow I take that up to the Post Office, and the gears will finally be in motion.
The game is going pretty well now that all the basic elements are in place, and I was even able to get the Critters a little something for Christmas, too: a (not quite finished yet) home. ( 6 images and descriptions under the cut )
|
|