Brandon's Blog
8/19/2011 #
It's Not What Your Country Does To You...
“secure the Blessings of Liberty to ourselves and our Posterity”
“promote the general Welfare“
“to execute the Laws of the Union, suppress Insurrections and repel Invasions“
“To declare War”
“The Privilege of the Writ of Habeas Corpus shall not be suspended, unless when in Cases of Rebellion or Invasion the public Safety may require it.”
“No Money shall be drawn from the Treasury, but in Consequence of Appropriations made by Law; and a regular Statement and Account of the Receipts and Expenditures of all public Money shall be published from time to time.”
“the right of the people to keep and bear Arms, shall not be infringed.”
“nor shall private property be taken for public use, without just compensation”
“The enumeration in the Constitution, of certain rights, shall not be construed to deny or disparage others retained by the people.”
“No Preference shall be given by any Regulation of Commerce or Revenue to the Ports of one State over those of another”
“he shall nominate, and by and with the Advice and Consent of the Senate, shall appoint Ambassadors, other public Ministers and Consuls”
8/17/2011 #
Hello, My Name Is...
I normally feel like I struggle in these situations, but I did alright this time: Somebody walked up to me in the hallway and said, “So you sit somewhere around here?” I thought that was an interesting lead-off for somebody I’ve never met, so I clarified where I sat and subsequently introduced myself. Turns out I look like some engineer elsewhere in the complex. My being a doppelganger engineer was not excellent fodder for conversation, so that little meeting adjourned quickly.
Today I made significant progress in attempting to define a subsequent role in terms of doing what I’m actually meant to do. I imagine myself as being the sort of corporate technical/business hybrid version of Winston “The Wolf” Wolfe, the mob guy in Pulp Fiction they called to clean up after they shot Marvin in the car.
My planning project (the VBScript monster), having passed over 600 lines today, is a major argument in that direction. For the second time in as many weeks, I was asked how I ended up in my current job given the skills I have. When you’re macro programming in Excel, it’s easy to treat it as advanced spreadsheet skills. What I’m doing now is real programming, at least as real as it can get writing VBScript plugged into IE and Excel.
8/16/2011 #
Rigged
One of the wackiest things about Upstream is the crazy naming of the fields, rigs, and wells.
We have Enchilada and Salsa, and now I’ve added Popeye to my pantheon of known assets. In a bit of an end-day sardonic funk yesterday, I said it would make sense that Enchilada and Salsa are in the same field as Popeye, since they all go well with spinach.
Crippled by the low context of instant messaging, my compadre said, “I don’t know about Spinach, where is that one?”
Ay ay ay, well blow me down.
8/10/2011 #
Crazy Project
In a fairly extreme showcase of latent creativity and masochism, I have designed the beginnings of a VBScript user interface toolkit. It launches Internet Explorer and allows bidirectional communication with a script in a separate file. Since VBScript has no pure way to use multiple files in a programming project, I am required to place my program code in the same file as the toolkit, which just kind of shows how nutty this type of project really is.
Program code looks something like:
Sub Main(argc, argv)
Dim i
Set i = New ExplorerInterface
i.Title = "Explorer Interface"
i.Visible = True
i.bindEvent "boom", "onclick", "React"
i.Run
End Sub
Sub React(context, trigger)
context.findElement("test").innerHTML = "BANG BANG BANG!"
End Sub
Once you set up the interface, you change the window title and make it visible. Then, bindEvent says, “When the object named ‘boom’ is clicked, run the ‘React’ subroutine.” i.Run starts up the event loop, meaning the program is now waiting for user input. The program cleans up and quits as soon as the browser is closed.
Event handling is carried out via a hidden text box in the web browser’s document. Whenever any bound event happens, it adds a little token to that text box, like ‘boom$onclick’. Then, every 0.1 seconds the application checks the box for any signals and runs the proper event (‘React’ in this case) if that action was recently recorded. React in this example finds a designated paragraph in the browser document and changes its text to “BANG BANG BANG!”
The live nature of this - being able to bind events on the fly between script world and browser world, is accomplished via some truly aborrent JavaScript, which is hot-inserted by the VBScript mid-execution.
Doing things this way gives you a lot of flexibility. Internet Explorer is especially picky about running wacko scripts like this directly, so all this indirection serves to insulate me from various security measures. I am free to instance Excel as well (definitely my plan for this project) and carry out automation tasks while logging progress and errors to the web browser window.
In a more realistic world, events are more like triggers (pressing the “START” button) and then the script takes over, basically ignoring any further input aside from maybe a “PAUSE” button. Anyway, it’s pretty much useful for any scripting application, with the right infrastructure.
I have used IE interfaces in the past for scripting, but I’ve never formalized the setup to be more universally-applicable and easy to use. I’m hoping I can use this in various automation projects.
8/8/2011 #
Grim, Dim, Hope is Slim
It seems like most of the mean stuff in Revelation has multiple heads.
Gotta wonder if those are committees.
8/1/2011 #
Why We Work on MUDs
It doesn’t really matter if you will be the only player of your little MUD. The point is working on the design, making it fair and sensible.
The whole model is not sensible, which is the real challenge. You’re dealing with a world that persists independently of a player’s perception of it (a tree falling in a MUD forest definitely makes a sound no matter what). Most games are orchestrated experiences from the perspective of the player. MUDs are literally a world.
The most senseless part of the MUD experience is actually quitting. How do you quit life? Normally, when you log off you just disappear, “leave the game” is the terminology generally used. That sounds fine until you think about a random quit, normally in the heat of battle. Internet links are not perfect, and if you’re playing on a smart phone, what happens if you have to take a call? It’s not quite fair to get your butt kicked by the persistent world when you have no way to interact or control/monitor the outcome.
It might be tempting to interrupt only as much game state as does not impact other players significantly. So, it might sound good to temporarily vaporize the current opponent and have them come back fighting you when you log back on. But what if you are fighting as part of a group? And you definitely cannot “disappear” an opponent if you are fighting a real person. How is that fair to them? If you are fighting a computer-controlled character, lesser problems also arise. If you decide to “disappear” anything not human-controlled, you run into questions like: if the dragon is a really unique monster, and he disappears with a logged off player, should another dragon show up to take his place so other characters do not see an interrupted or illogical experience (especially if the logged off player never returns?)? When the logged off player comes back, will there be two dragons? When you start talking about rare things, this could seriously break the game’s continuity, even if the players were not being malicious/manipulative about logging off.
When you start the engineering problem solving around these questions, you normally come up with coarse plans like the ones above. You say, monsters vaporize when people vaporize. Then you realize the difficulties and propose configuration and game mechanics to prevent things from getting out of control: have a little routine to monitor vaporized monsters and clear out the queue after an hour or so. That’s a performance issue. Then you need to be able to mark a monster’s configuration as being non-vaporizable. That’s an encumbrance to the designer, yet another little technical barb to remember.
Then you might try to build a whole game mechanic around it. Have the monster chase you into some temporary location conditioned on a certain set of rules, then fight them there if you log back in. Rethink the entire idea of game presence. That’s probably a rewrite of some significant logic, so you stop here and wonder how it can ever get done. Then a reasonable solution arises:
What if computer-controlled entities just hold grudges? If you disappear, the monster puts you on a hit-list. If the monster ever sees you again, you get attacked. That way, if it’s a quiet day in the game, anybody who logs back in quickly will probably just pick up where they left off. If it’s a nothing enemy, it probably walked away and got killed by somebody else. Fine. If it’s a one-of-a-kind enemy, it’s likely to be there when you get back as well.
It’s finding an “out” like this that makes the whole intellectual design process especially interesting.
7/28/2011 #
The Aprons of Silence
My favorite poem, “Aprons of Silence” by Carl Sandburg, starts with: “Many things I might have said today / And I kept my mouth shut.”
I have a few silly stories to tell that I’d rather not tell online despite their harmlessness. Ask me about them in person sometime.
Silly stories might be my only trade right now. Things are running pretty slowly. My current job is good, but I’m struggling to envision my future at this moment. It doesn’t mean it’s not there, but I can’t completely see it right now.
Aside from it being a significant emotional stress on me, elements of Turkey turned out to be my true calling as far as I can tell. It’s hard to find out if the good stuff could ever exist in relative isolation from the uncomfortable stuff I experienced in Turkey. I think it might, but I don’t know how or where.
I’m trying to see how a line management track, which is my path now in all probability, would get me somewhere similar to this vision. Again, it might be able to happen. Especially in a big shop, there are lots of corners that can have a weird nexus of opportunity.
It just turned out that my IT bent, which I always knew to be my love in life, might be a bit more commercializable than I originally thought. I got a taste of a kind of IT divorced from both the disgusting corporate bureaucracy and the pure technical (which I love but don’t know if I could do for a living, a reservation I’ve had since high school).
Kind of like being a COBOL programmer, the Grand Canyon will probably touch magma before this type of trade dies out.
My education path never implied that I would find a stable career path, effectively nurturing a Jekyll and Hyde yin-yang between technical and finance (which is also technical in my eyes). But my preference is to be stable. The fact that I can’t get this off my mind says it should probably stay there.
7/26/2011 #
Another Modest Proposal
To get around the ridiculous CAFE standards coming out of the EPA these days, I propose that all the major car companies buy up all the major bicycle, motorcycle, and scooter companies and have those vehicles count against the miles-per-gallon standards.
If an electric car is a viable alternative for a gasoline car, why isn’t a bicycle a legitimate alternative for a motor vehicle altogether? How can we Win the Future if we don’t take a few hints from the Chinese?
7/18/2011 #
Tonight's Gonna Be a Good Night
I had quite the fiasco last night with the server. Apparently, Debian Linux released a new version over the last few months. The way Debian works, they denote their releases by stable, unstable, and testing. I was running stable. When there is a new release, the new release becomes stable, and the previous version becomes an “old” release.
The problem was: my update configuration (default from the server host I use, I must add) said, “Pull update packages for the stable release.”
When I ran updates, it proceeded to pull down patches for the new release and merge them into my now-“old” install. This would be akin to Windows Update pulling Windows Vista updates for your XP machine.
Everything proceeded to break. Because the dependencies of the new packages did not match the foundation of my old packages, I could neither install nor uninstall just about anything. This took down my web server, mail server, application server, and disabled a few other key installs.
I originally thought I had some kind of circular dependency, so it took me quite a bit of time to figure out I needed to specify the exact release for updates and re-run the updater. Once I did that, it restored most of the system, minus a little tweak or two to get back configuration it over-wrote in the process.
The cool thing here is that, although it destroyed quite a bit of the functionality of the server for an hour or so, the vast majority of my configuration and all of my data were completely safe. I didn’t fear for them at all, except in a worst-case kind of way that is pretty much the standard server admin mentality.
I was mostly freaked out because everything was down. That’s probably vanity; nobody is really depending on my server being up. I definitely was afraid I would have to backup everything (error-prone) and reinstall the server, which would have been pretty painful now that I have made so many modifications and have such a vast array of goodies running.
I never fail to learn something when anything like that happens.
The more I do stuff like this, and after seeing what I saw in Turkey, the more I begin to realize I was meant to do this system stuff: making things work, designing, optimizing, deploying and explaining to people who don’t have to know the inner workings. I’m working very hard right now mentally to reconcile that with my current trajectory. Paperwork calls…
7/11/2011 #
Ear Flaps Optional
I got a great hand tan from my ill-timed yard work and car washing this weekend. Legs were unaffected due to the foreshortened blistering high-noon sun. I also wore my Columbia Omnishade hat and a wet towel pinned underneath the back of the baseball cap to cover my ears and neck.
I thought I might look like an Arab warrior or something all decked out with my homemade headwear, but Kristin said I looked more like a Canadian hoser with an ear flap hat.
Maybe if I install a head spike or something…
> Newer Posts
< Older Posts