Jump to content

  • Log In with Google      Sign In   
  • Create Account

The Bag of Holding

Bringing Milton back to life, part 2

Posted by , 30 April 2006 - - - - - - · 135 views

... and this is why I've never really, truly loved Linux.

Yeah, I like it fine as a Unix. The philosophy is a little shaky, and as far as Unixes go, I actually kind of prefer BSD, in a little secret corner of my heart. But Linux is what I'm directly familiar with, and I already have a perfectly good set of RHL disks, so I'm too lazy to actually go out and get a good set of OpenBSD ISOs and burn the disks so I can use it instead.

The problem I have with Linux is hardware support. Or, more accurately, the fact that Linux has none. It sucks. It's beyond abysmal. I actually first started trying to dabble in Linux almost 10 years ago now, but couldn't find a distro that would work with the hardware I had available.

Today, 10 freaking years later, I'm still plagued with hardware support issues.

I remember now why the last build of Milton took so long: I had to manually find an nForce driver set for the 2.4 kernel, make a manual bugfix, build the driver, and install it. All that so I could just download the updated 2.6 kernel and redo it all.

So I went to go install 2.6 today, and guess what? wget barfed on me. Oh yeah, whoops... I have no network drivers.

I was happy, for a few minutes - I had a nice shiny working clean server, and all I had to do was install some packages. Then this.

Gaahhh! Oh well. I guess it isn't a proper Unix server deployment if you don't have to copy some driver sources by hand from another machine and do a manual patch to the code.

Fricken Linux.

Rebuilding a server

Posted by , 30 April 2006 - - - - - - · 203 views

I've finally gotten off my lazy butt and started rebuilding Milton. Milton was the server for my Tiny KeyCounter project, before one of the hard drives decided it was going to die.

One of the drives was the OS and actual site/database, and the other was basically nothing but a nightly backup image of the site and DB. I have no idea which drive failed - or even if one of them is still alive. I do know that the system is totally unrecoverable on whichever drive is dead, because I wasted several hours with fsck and family with no results.

So currently the easy part is in progress: I'm about 60% done with a reinstall of RedHat 8.0 on a brand new 80GB drive. I'm praying the install I've set up doesn't need CD number 3, because I can't find that disk.

Once the unpleasantries of a fresh Linux install are done, it's time to do a kernel update, pull the latest stable builds of Apache and MySQL, and get a running box going. From there I'll reconnect the drives and see if I can salvage any of the site; I'm assuming at this point that I won't be able to, and I'll leave the TKC project dead until/unless I ever decide I care to finish Version 2.0 of it.

Once the box is live, it'll be come the home of the wiki for the Epoch language project - provided one final piece falls into place.

A couple of days ago, there was a power outage. When the power came back up, the cable modem wouldn't connect. A few hours later, it finally got its act together. Now, I'm on a different IP range than I was before, and for some reason there are some serious problems connecting onto machines on my local network. I'm still not sure if that's because my idiot ISP has done something to prevent inbound connections (probably under the guise of being "for security") or if I goofed up my router settings somewhere along the line.

I really hope this isn't an ISP issue, because I can't afford to colocate this box right now, and it'd really suck to do a complete server build and find out I have a useless machine on my hands.

So... joyful grand fun, all around. IT is just the most excitingest field ever!

Motivation time!

Posted by , 28 April 2006 - - - - - - · 195 views

I hereby issue myself a challenge.

It is shortly after 9 AM on Friday, April 28th, 2006. I have a list of mini-milestones that I wanted to have done this week in order to get the cutscene engine mostly implemented. I have thus far not done such a great job of keeping up with things, mostly due to having apparently developed a light dose of narcolepsy in the last three days. (I'm sure my rampant caffeine abuse and maniacally inconsistent schedule has nothing to do with it.)

So... here's what I want to get done today. My goal is to finish all of this by around 7 PM so that I can go out to dinner and a movie with some friends of mine.

  • Finish linear interpolation wrapper code (trivial) (Finished 9:14 AM)

  • Stub out spline interpolation code (Finished 9:15 AM)

  • Finish remaining special non-interpolation modes (Finished 9:16 AM)

  • Build and pass unit tests for interpolation system, sans spline interpolation (Finished 12:56 PM)

  • Codify the remaining elements of the system as a set of class interfaces (Finished 3:53 PM)

  • Implement skeletal outlines of the system in code, stub in pseudocode for algorithms where possible (Finished 4:31 PM)

  • Implement the core of the data flow model for managing timing and interdependent timing events (See Final Update below)

  • Implement validation/sanity logic for timing dependency system (See Final Update below)

  • Implement a dummy playback system that shows a real-time log of what a cutscene does as it plays (without actual rendering) - this is optional for tonight, but needs to be done this weekend at the latest. (See Final Update below)

Once those goals are done, the next big thing is to start integrating the logic with actual rendering code, so that we can actually see what's going on. From there, I need to build a veneer layer in XML so that certain special cases (Mission Briefing screens) can be handled easily by the content creation team. And then it's pretty much just patching and polishing and the sucker is done and ready for prime-time - right on schedule, hopefully.

So... there's my goals for myself, and they're now public, so I can no longer succumb to the temptation to go sneakly reassign tasks to next week, and pretend that I'm still on track.

I'll update this post and strike off items as I finish them, followed by a recap tonight when I finish. I'm going to force myself to not go out tonight if I'm not done, which should serve as a nice incentive to actually work.

Gentlemen, start your brains. The cheese flow will arrive soon, and we must be ready.

Update 12:39PM
I'm very annoyed. The unit test thing is taking about a billion times longer than it should have - I've had the tests coded for ages but I can't run them because my build environment got borked someplace along the line.

I've tracked the issue down to a couple of script files that were built with an old version of the compiler, so I have to rebuild them - but to do that I need to update a couple of files from the master repository, and it's taking a bloody long time. Much longer than copying 120KB should take.

Eventually, I'll be able to strike off that item. With luck I'll have a finished, unit-tested module by 1PM, which will give me about 6 hours to tackle the remaining items. Should be doable.

Update 12:56PM
Finally got it all working. The unit test quickly nailed a boundary-condition bug that I probably wouldn't have found for months without the test in place. Score one for good development practices. Anyways, it's time for a hard-earned break I think... and some food.

2:54 PM
Man... I suck. I have no idea where the last hour and a half went. Oh well... four hours to get this stuff done; it'll be a hard push, but I'm armed with a Stewart's peach soda and DI.fm's Chillout channel, so I think I can pull it off. Crunch time.

3:53 PM
Alright, this is more like it. I've got the basics of the classes all stubbed out, and some detailed implementation plans for how to represent all of the necessary data. I even whipped up a couple of diagrams and a wiki page entry for the plans. Now I just need to fight the urge to take another "quick break" - hah, hah.

Final Update 4:35PM
I just realized that I got some things out of order with this task list. I can't really solve the timing stuff until the representation of the entire system is built up, so I'll finish fleshing out the skeleton framework first and go back and add in the timing logic as I go, organically. That should work a lot better.

I will continue on this until 7PM (or some close time where I feel satisfied with my progress). So... all things considered: Challenge Completed Successfully! I am The Man.

Reading material FTW

Posted by , 26 April 2006 - - - - - - · 149 views

My copy of Programming Language Pragmatics just arrived today. It's big, heavy, and features small print.

Perfect bedtime reading.

Brain stretch

Posted by , 25 April 2006 - - - - - - · 184 views

I've had a sort of recurring idea several times over the last few years. It involves a way to avoid stagnation of knowledge and skills, and identifying gaps and holes in important knowledge.

My idea is to periodically patrol the technical forums (and maybe some other ones too, like Business of Game Development) and look for questions that I can't think of an answer to - or, worse, can't think of how I'd go about researching an answer. Once a few such questions are identified, the idea is to find out how to answer them. Maybe that would involve waiting for other answers; but usually it involves educating oneself about the problem domain and learning a few things.

This idea came to mind again tonight. I've learned something interesting about my ideas: if I deliberately ignore them and they persist in coming back at least once, it's extremely important that I pay attention to them. This is at least the sixth or seventh time I've had this idea, so it's time to start doing it.

But not tonight. Tonight I'm going to go to bed.

As soon as I finish this SICP video. It's interestingly pertinent to my current work (defining and manipulating complex data structures by creating them recursively out of trivial elements). And the "OMFG HEAD ASPLODE" expressions from the audience are just priceless.


Posted by , 25 April 2006 - - - - - - · 173 views

I am ridiculously tired.

I have a lot of work planned out for this week that I need to get done (deadlines before I go off and lose a week at E3 next month) but I'm slipping behind.

Bleh. Sleep first, care later.


Posted by , 24 April 2006 - - - - - - · 164 views

At the recommendation of a commenter on one of my previous entries (thanks, btw, even though I'm too lazy to find out who you were [wink]) I've been watching the video lectures from Structure and Interpretation of Computer Programs.

It's very entertaining, because the poor HP employees are clearly getting a very concentrated dose of brain-rape. Interestingly, being so freshly converted to the True Way of Lisp, I can both completely understand all of the concepts being discussed in the lectures, and understand just how utterly mind-bendingly weird all of this stuff is to a group of people who had (presumably) been doing everything in FORTRAN or whatever.

There's one guy in particular who occasionally gets shown during the lectures, and every time his face shows up, I imagine his brain overheating and his entire head exploding right there in the lecture hall.

Classic entertainment. If you're a total geek.

Short Journal Entry! Anathema!

Posted by , 22 April 2006 - - - - - - · 180 views

Alright, fine, I just can't do it. I can't post a short journal entry [grin]

Actually, this is really just a half post-script. I have a feeling it won't make for anything long, but usually, the stronger I get that feeling, the more wrong I am - and the longer my posts get. Oh well.

Anyways, I just realized something about myself. I was working on putting together a mathematical model for balancing the rewards issued to the player when they complete missions in the game, based on a few input factors. I solved the problem the way I normally do: sat down, scribbled out some core observations and goals for the system, and then proceeded to stare vacantly into my lap for about 30 minutes. At one point I nearly fell asleep.

Then, after a while, I sort of popped "awake" and just spilled out a fully-formed, completely solved model, including ways to handle all the input factors (I even concluded that one of the proposed factors would have no beneficial effect and could be rolled into another factor). I wrote a 15KB email, entirely off the top of my head, in a single sitting. Didn't pause to think through anything, stop and reword anything, or whatever - it was basically fully formed in my brain already.

I probably would never have noticed that at all, except that I then proceeded to take a quick visit to the Lounge, and came across a thread on meditation. I read through the description of one of the meditative techniques, and realized that it pretty much identically matches what I do when I think about hard problems. That got me into Navel-Gazing Turbo Gear.

Looking back, I've been solving problems that way for as long as I can remember. I don't consciously sit there and think out-loud thoughts about whatever I'm working on - I sort of zone out, and after a while I just know the answer. Most of the time I can't even really express what I did to get the answer - which got me into a hell of a lot of hot water when I took Algebra in high school, let me tell you.

In fact, even then, I didn't really see what was going on; I just solved the problem, and never really was clear on why everyone seemed so obsessed with how I'd solved it. I knew I wasn't cheating, so it wasn't that - right? Bugged the heck out of me for quite a while, too; eventually I learned to suppress it, thanks to the carrot/stick of partial credit.

But left to my own devices, that's just how I do things. I think maybe that's why everyone at my Old Day Job had trouble realizing I was working on stuff - I probably look like I'm high or something.

That, of course, raises an interesting question: am I just insane for doing that, or is that how everyone works on hard problems? Is this some kind of weird psychological quirk that only appears among INTJ type people, or do I just do it more "strongly" than most people?

Inquiring hypochondriacs want to know [wink]


Posted by , 22 April 2006 - - - - - - · 214 views

A new Books-A-Million just opened up about a mile from my apartment.

They also do not have any good books. In fact, the store is tiny, and barely has any computer-related books at all.



Posted by , 20 April 2006 - - - - - - · 284 views

I'm looking for a book. (For those not inclined to suffer through my tomes, you may skip to the end [smile])

In today's society, that's not really a remarkable thing. Just pop down to your local Borders, grab a double caramel latte with whipped cream and cinnamon, and bum around scanning shelves for a couple of hours. If you absolutely must get all hurried and technical and such, haul your coffee over to the little self-service info kiosk and search for the book by hand.

Heck, if you're going to be that lazy, just stay at home and use Amazon.

All of that works great... if you know what book you're looking for. Sure, for some categories of books, a good old-fashioned browse session in a brick-and-mortar store will probably get what you need. Maybe I'm just a sentimental, old-fashioned fart, but I really enjoy browsing like that. Grab a coffee, sit down in a nice spongy lounge chair, and blow an entire afternoon. Maybe take a short nap, walk around, talk to other people who are similarly browsing.

There comes a point, though, where brick and mortar stores have to make a trade-off. They have to stock stuff that they're likely to sell, or they'll never sell it. (I've had the grand good fortune to find a store specializing in obscure books precisely once in my life. Sadly, I was far too young and foolish to appreciate what I'd found at the time, and have long since forgotten where it even was.)

The practical upshot of this is that every now and then one comes across a need for a book that is very hard to satisfy by browsing - because the store doesn't stock such books. Sure, you can request specific books to be brought in, but that requires knowing the book you want beforehand - which again defeats the point of browsing.

The Internet was supposed to solve this. The dream was that oneday, mankind could feel this deep, ineffable need to find Some Book, about Some Thing. Man would then open up his Internet browser, do some searches, and find the Book. If the book sellers get to have their happy dream, too, then man finds several Books at the same time, many of which he wasn't actually looking for, and spends several hundred dollars stocking up shredded dead trees so he can curl up with lattes in the comfort of his own spongy lounge chair, without having to drive across town.

This is a wonderful dream. I hope it comes true someday.

For now, though, the dream is broken. Search technology sucks. Searching is useless on the Internet unless you already know what you are looking for (and even then sometimes it isn't all that useful). In fact, I think an interesting thing has happened, something that most people haven't quite cottoned on to yet.

Automated computerized searching is bad for learning things you know nothing about. If you can't express what you want to find in a couple of keywords, you're screwed. Often, you can come up with a couple of keywords, but unless they're precisely the same keywords that were thought of by everyone else, you probably won't find it, even though you know it's out there. Anyone who (like me) has been hanging around on the Internet for more than a few years knows the frustration of not being able to find something you know exists.

The fact is, people are far better at searching than computers, even the massive farms of computers at Google. (Because, face it, in the IT realm, Google is the de facto king of search.) People can talk to each other, discuss things, compare notes; even the mere act of describing to some other person what you are looking for often helps crystallize your own perceptions. People can say "I need Foo." Then some other person says "Well, I dunno about Foo, but I've got Bar, and it's pretty darn close." Then the first person says "Aha! Bar is indeed close, but not exactly it. Maybe what I'm really after is Baz. You got any Baz?" And then wham, Baz is found.

I think that's why, despite the near cliche of "Google first, post questions later," we still get a massive amount of people asking questions here (and on any Internet community, really). Because Google is only good for searching if you already know what you want to find. If you don't know what you're trying to find, you need people. People are far better at searching than Google - and it's likely to stay that way for at least a few more years. Maybe a lot of years. I don't know.

In the old days, this search problem was called "education." Since then we've totally perverted the concept of education and turned it into a brainwashing, here-beleive-these-facts sort of system. "Education" today means cramming the wealth of human knowledge down the uninterested throats of innocent kids who'd rather be running around outside. Education has lost its meaning, and this is a terrible misfortune.

Education, mentoring, discipleship, apprenticeship - even parenting - used to revolve around the notion of helping people search. The idea used to be that you would help people understand their own questions first, then help them answer them. It was a beautiful and powerful system. A thin scrap of it still survives in the American masters/doctorate degree research system, but even that spark is fading and dying, because people no longer understand that education means searching.

Education shouldn't be about pushing knowledge from the Knowledge Repository down into the Empty Young Minds. Education should be about the Older and Wiser coming alongside the Young, helping them to ask questions, and then helping to answer them.

I had a practical point here, but, as is my habit, I turned it into a rather long-winded rant - again. The practical point was that, in working on this Epoch project, I've realized just how unable I am to express my own questions.

What I really want is to be able to look at examples. I never really did care much for sterile, surgical history; but I'm absolutely fascinated by first-hand, personal, in-depth accounts of what people experience in the process of expressing questions, and then looking for answers. What I want is a book (maybe several books) that do this for programming languages. What struggles, annoyances, frustrations, and challenges were out there that drove people to create new languages? What motivated people to solve problems in certain ways rather than in others? To what extent are such solutions measurably "good" or "bad" and to what extent are they purely subjective?

I can't express that search in a way that Google or Amazon understands. I hope that maybe I can find someone sympathetic here, who knows better how to express the questions I want to ask - and maybe even knows how to answer them.

January 2017 »

151617 18 192021