09/23/2008 06:46 PM -
today i worked some more on the poor man's workflow. i was suprised to find that it actually is possible to build this particular webservice project and run it in debug mode, given enough patience.
i resolved all the dependencies to their assemblies, and rebuilt them myself where need be. then i rebuilt the assemblies referenced by the dependencies, and in a few cases i even went out to the fourth level. if you envision project dependencies as a tree, each node being completed requires that all its parent nodes be rebuilt in a reverse-looking order.
let us take this tree as an example. i'm trying to build the webservice project. for the sake of brevity, i'll let you imagine the second tier has 20 projects, the third has about 30, and the fourth has an unknown number somewhere above fifty.
in this scenario, i had to go way out to the 50+ projects at level 4 (i.e. picture a project 17q21 compliant to the inferred schema). after managing to get 17q21 to build, i'd have to build 17q, 17, and the webservice project itself to see if my dependency had been resolved. then and only then could i move onto the project 17q22 subtree - or, if i was lucky, 17r.
in actuality, i found alot of crap like this:
on a side note, this naming methodology granularity is also present in our newest architecture, which is under a year old.
i was seldom fortunate enough to find projects named aptly to what they do. one specific example is called a lookupcontainer. upon closer inspection, the lookupcontainer contains the projects which perform the calls to the more-deeply-nested projects that actually have a class that's allowed to look up data. on top of that, the lookupcontainer in the above example is only project 1a3.
so in this example, the tree looks like this:
- project 1a3 (lookupcontainer)
\- project 1a3a (lookup project)
\- project 1a3a1 ("component" project)
\- project 1a3a1a (interface)
\- project 1a3a1a1 (data access project)
\- class 1a3a1a1a (data access class)
\- method 1a3a1a1a1
in this tree, method 1a3a1a1a1 actually opens a connection to a database and communicates with it. from there, we pass the data nine fucking levels back up to the webservice that actually wants the data. in the process (no pun intended), we go through a series of obscure custom objects and data conversions. the data came in as a string, and will go out as a string; but that doesn't mean we have to keep it a string.
entire seconds have been wasted in the ether due to this simple db2 call, which by itself took 31 milliseconds. when you're doing it ten times per second, that's alot of waste. nobody finds it strange that this process needs 12 application servers, a dedicated as400 mainframe, and a quad-dual-quad-core sql cluster. that is to say, the servers in the cluster have two quad-core cpus, and there are four of them. sql does nothing except store management information about the e-mail campaigns; all these data lookups actually go to db2.
keep in mind that this "master webservice", as i'll call it, is just one step in the aggregator i'm actually improving; and the aggregator isn't even part of the legacy jungle. that's right, when we do a rewrite, we actually leave the legacy codebases in production without migrating them into the new codebase. one would think the architecture should be independent of the architectures it replaces.
in fact, the aggregator is one in a series of a dozen aggregators being called by this campaign. these 12 aggregators will execute once for every e-mail sent out by this campaign. we have dozens of campaigns running simultaneously.
in our stack traces, the insurancecarrier namespace actually takes up twice as many lines as the system namespace.
another problem i've run into is circular references, which should never happen outside of a poorly-built excel spreadsheet. in this sc
09/22/2008 06:37 PM -
for the past week or so, i've been working on adding a feature to a product. this feature must find the primary sms contact number for a given policy. once i figured out the right way to go, i had the query done in a matter of minutes. i had it in the codebase in under an hour. it took so long because of all the overhead (many tests, process documentation, etc) we do at my major insurance provider. then i was told it had to go into one of our many legacy codebases.
it's been downhill since then.
i opened up the source control database for the legacy codebase. i was awe-struck to find no less than 35 solutions and 350 projects. after much deliberation and some minor tree walking, i found my way into the solution that included the webservice.
then i tried to build it.
project build failed; are you missing an assembly reference? twenty assembly references missing. so i downloaded the remainder of the poor man's workflow legacy codebase, thus resolving two dependencies. i opened up a second copy of the now-archaic visual studio 2003, loaded the project for the first dependency, built it, and moved the assembly to the assigned buildoutput folder. 17 to go. i got through seven of them before i thought of something.
i had to be connected to the server containing the source.
while connected to the legacy codebase vss database, i ran a netstat. one open connection was to the new codebase on a server i recognized. another was to the same server name, but with a different and much lower number (i.e. servername01 instead of servername27). so i browsed to \\servername01\ and found my codebase's source control repository.
i could now perform a search.
i found pre-built assemblies for the remaining 10 projects and a total of 50 sub-assemblies which were required by the 17 projects required by the actual solution i wished to build. after a solid hour of recon, i had a webservice that ran. it took one parameter.
serializedrequest? where do i find that?
i tried the syntax we used for the serializedrequest of a different service, which obviously didn't work. this shop thought it was agile, so it wouldn't have any documentation... or would it? quickly, i browsed to my group's sharepoint site and searched for the webmethod name. five results returned. i opened one labeled "examplesyntax.doc", containing a solitary line of xml.
i had my request string.
i fed it into the webmethod and invoked. i waited for two minutes while the process ran, not hitting a single one of my breakpoints. my request had timed out, but i was browsing to a site being hosted on localhost!
ahh, here it is: the webmethod actually calls another webmethod in a far away land, which in turn actually performs the chore of connecting to db2.
i'd had enough. i went home.
09/22/2008 05:12 PM -
so i get this card and message via snail mail today:
dear precash sprint cardholder:
we would like to thank you for selecting precash for your sprint bill pay needs. as one of our special customers, we are offering you an upgrade to the new vision premier prepaid visa card! your approval is guaranteed.* in fact, we've already enclosed your new card with this letter. all you have to do is call 1-866-761-6559 to activate your card.
[miscellaneous propaganda goes here]
* obtaining your card: the usa patriot act is a federal law that requires all financial institutions to obtain, verify, and record information that identifies each person who opens a card account. what this means for you: when you open a card account, we will ask you for your name, address, date of birth, and other information that will allow us to reasonably identify you. we may also ask to see your driver's license or other identifying documents. "you're already approved" is contingent upon successfully passing this mandatory identification confirmation.
i have a number of problems with what has been said here:there were no identifying marks to indicate this was a sprint communication, other than "dear precash sprint cardholder". looked like a scam."thank you for selecting precash": i didn't select precash; sprint wouldn't let me pay via debit card for the first year of my service."special customers": all customers are special. we give you money. how am i any different, except for my ridiculously low sprint phone bill?"offering you an upgrade": this is not an upgrade. it's sprint's newest scheme to get their money, fast. while it is technically a debit card, it's a debit card which sprint will automatically take your money away from every billing cycle.
further, there's a limit of two $999 deposits per day. well, my paychecks happen to exceed $1998 ($999 * 2); so direct deposit wouldn't be a very good idea for me.
further, there's a fee of $.99 per week if you don't have your paychecks direct deposited into this account. i have usaa, bitches. beat that."vision premier prepaid visa card": what's so premier about it? google defines premier as:first in status or importance; principal or chief: an architect of premier rank.first to occur or exist; earliest.a prime minister.a chief administrative officer, as of a canadian province.obviously, this debit card isn't an architect of premier rank, nor the first debit card to occur or exist, nor a prime minister, nor any kind of officer. that's just false advertising - though i'd sooner trust my money to sprint than to a politician. at least when sprint steals my money i can sue them."your approval is guaranteed": uh huh. with a bunch of caveats. and it's just a debit card; anyone with a checking account can get a debit card, and any citizen who makes more money than an ethiopian can get a checking account."all you have to do is call 1-866-761-6559 to activate your card": yeah, and to open my account with bancorp bank, ya stinkin' liars."we will ask you for your [personal information]": when you address the letter to sprint customers, people will infer that you are sprint. in fact, the letter came from a third party which has some sort of obscure business agreement with sprint. i'll be damned if i'll proactively give my personal information to some company i've never heard of. sure, sprint already did it anyway, but in principle i didn't do it proactively."we may also ask to see your driver's license or other identifying documents.": they likely want me to fax them my social security card. good luck on that one.when i first got this, i was sure it was a scam. it's addressed generically and contains a third-rate debit card which doesn't even look as realistic as some counterfeits. they asked for personal information, never identified themselves outside of fine-print disclaimers, and want me to put my money in some pseudo-checking account (without checks). essentially, they want me to direct deposit my considerable income directly into my phone bill.
i didn't even believe this was a legitim
09/21/2008 09:11 PM -
this weekend, during my parts upgrade, we noticed we were having some intermittent connectivity issues through both the cable and dsl. so we rebuilt the network. also, because we were sick of having ips on three different subnets, we moved to a subnet mask of 255.255.0,0, giving us 65,534 ip addresses to play with and combining the three logical networks into one.
during the process, the cable modem got plugged directly into a computer to troubleshoot the connectivity issues. while these issues have been resolved, the process had the unfortunate side effect of changing my public ip address.
comcast assigns ip addresses as semi-reserved dynamic. this means that the public ip address isn't technically static, but doesn't change unless a different device is plugged into the modem, or the service location is moved.
i just realized this today when i checked my recent traffic and realized there wasn't any. so i changed the ip over and you should be able to read this now :)
09/20/2008 06:03 PM -
my new mobo, hdd, psu, and ram have arrived. as promised, my third pci-express x16 slot has allowed me to run my third radeon x1650 pro, thus enabling monitors #5 and 6.
no more clutter (well, 50% less clutter) when i have 30 windows open. i can span visual studio across three monitors, watch a full-screen blu-ray movie, and reference my project website and a reference site... all at the same time, without switching between windows.
quad-core. 8gb ram. six monitors; 8200x1050 total desktop area. that makes it an 8.61-megapixel desktop. it's good to be back.
09/18/2008 06:34 PM -
architecture is the single most important consideration when designing a product. if you don't design it well, it will cause an unknown but generally high number of problems down the road, and your developers will laugh about it with your production support people when outside at the smoking pit. this is not a healthy place for a product to be.
i've recently been tasked to create a feature that will find the primary text messaging contact number for a given insurance policy. sounds simple enough, right? well, then you have to consider the different people in a policy and what roles they play. for example, you don't want us to send a damage estimate to your teenager's cell phone; you want us to send it to yours.
the query i ended up with had to go from our policy table all the way over to the phone numbers table and two attribute tables. unfortunately, the route was longer than it should have been, and my simple select statement ended up with nine tables and eight joins.
today i went to put it into code so it could be queried programatically. this seemed like a trivial task, but there was no db2 account in the configuration that had access to all nine tables. nay, we had two accounts, both with access to four of the tables, and one table which neither account could access.
so i queried one of the people on the business side, and she started working. in the meantime, i started building some code that would act as a go-between for the different access roles. i wasn't happy about the prospect of taking such large return sets between queries, but it looked like i was stuck with it.
then the mainframe lady returned an account with access to all nine tables. i was so relieved; my monster query would operate without obfuscation, just as it should. i added the configuration, ran my tests, and everything went fine.
i thought it was fairly impressive. i was told to get an example from our most recently-declared legacy system (herein, "poor man's workflow", for reasons i'll describe later). the example i found literally performs dozens of queries to get a simple phone number from a simple policy number. i was able to simplify that to one query (despite having eight inner joins). it was the right thing.
i proudly went over to pc1's desk to inform him of my task completion and ask about the proper procedure for elevating configuration changes. that is, since our umpteen test regions and prod all have different accounts, what is the official procedure to get the proper connectionstrings added to each configuration?
pc1: "why would you need to add one?
me: "because it wasn't there before."
pc1: "impossible, poor man's workflow has been using it for years!"
me: "poor man's workflow? nobody mentioned that! this code was to be called by the [specific aggregator name]."
pc1: "yes, kind of. that aggregator calls this webmethod in the [legacy system] codebase; you have to update that webservice and modify the aggregator to look for the new value in the return object."
well, it went downhill from there.
y'see, the poor man's workflow seems to have been designed to resemble windows workflow foundation; but in addition to failing miserably, is as intuitively architected as the drive-thrus that make you drive around the building twice before you can get your food.
each chunk of the architecture has its own solution, it uses web services for its database access (but only half the time), and the code is designed by designing a flowchart. yes, the architecture actually builds the code for you, which as you can imagine makes it fun to debug. additionally, sql queries, stored procedures, and connection strings are stored in a series of xml files, some numbering over 10,000 lines. but only some of them.
so tomorrow i have the awesomely exciting task of taking my nice new beautiful code out of the new solution and moving it into the poor man's workflow. assuming i can find the place where this webmethod actually exists, and the fourteen levels of obfuscation between there and the actual logic.
my point is simpl
09/17/2008 04:15 AM -
as if the $1,000 in computer parts i just ordered weren't enough, i went and bought some toys on thinkgeek:
bluetooth laser virtual keyboard: uses a laser to project the image of a keyboard onto a flat surface. you type on the keyboard and a motion sensor detects where your fingers are in relation to the "keys". connects via bluetooth, i expect to use it with my htc touch p3450 (review).
series of tubes t-shirt: a t-shirt depicting a series of tubes, in reference to senator stevens' analogy. y'see, the internet is not something that you just dump something on. it's not a big truck. it's a series of tubes!
initech t-shirt: "so we need you to ask yourself with each decision you make: 'is this good for the company?'." - my workplace is so much like the classic comedy company from office space it was only a matter of time.
johnny t-shirt: johnny was a chemist's son, but johnny is no more. what johnny thought was h2o, was h2so4. a comedic pitch on a child accidentally drinking sulfuric acid. how can anyone not find this funny?
no comment t-shirt: in reference to multi-line c-style comments, displays "no comment" in a c comment (i.e. /* no comment */).
think globally t-shirt: "think globally. act within local variable scope." - a particularly amusing analogy, i thought, as one of my worplace's core it powerpoints says "think globally - act locally". i doubt anyone will actually realize this is a joke, but it's funny to mee, dammit.
09/17/2008 01:28 AM -
i am not a morning person. nay, in fact, i'm generally not even alert until i've been awake for six hours. it's sad, really: i go to work and give them four hours of half-assed work, then four hours of good work. then i go home and work on personal projects, when i'm finally wide awake. then i go to bed at 2am, wide awake, because i have to get up in four hours. then the cycle repeats.
no longer - an experiment is neccessary to determine whether i should stay up awhile before going into work. you know, instead of waking up 20 minutes before my shift, like i do now.
first we must define what kind of "day" i refer to. after all, not everyone wakes up at 7am and goes to bed at 10pm. for the purposes of this entry, i shall use these definitions:day: the time between midnight and midnightconciousness cycle:the time between when i wake up, and the next time i wake up, having entered rem sleep at some point during the preceeding sleep cycle.the following chart will be updated throughout the next two weeks as i complete the experiment. the experimentation schedule is as follows:control week (09/08/08 - 09/12/08): business as usualtransitory week (09/15-08 - 09/19/08): this week, used to transition into the experimental schedule.test week (09/22/08 - 09/26/08): a more natural 25-26 hour day. each day this week, i will extend my day an hour or two beyond the physical day, which measures approximately 24 hours. monday will consist of waking up around 10:00 pm sunday night; friday will likely begin at 7:30 am.
stand back, people; i'm going to do science.
1: the question:
am i more alert toward the end of my conciousness cycle?
2: data gathered:
i'm very tired for the first 4-6 hours of a conciousness cycle.upon waking up, i have so little energy i need to invent ways to guarantee i wake up.the only time when my body can revert to its natural sleep cycle is when i have no job, or when i have a job that allows me to determine my own hours.when not constrained by schedules, my body's natural sleep cycle is 26-30 hours in duration. generally, as with most people, there is a 2:1 conciousness-to-sleep ratio.sleepiness patterns:the more awake i am during my free time, the less likely i am to go to bed when i should. conversely, the more tired i am, the more likely i am to get sucked into a project and work on it until 2am.the more tired i am at the end of a work shift, the more likely i am to go straight to bed when i get home. conversely, the more awake i am at the end of a shift, the more likely i am to go find a project to work on or a tv show to watch.the more tired i am at the end of a sleep cycle, the more likely i am to call in sick, thus causing attendance problems and alarm clock damage. conversely, the more awake i am at the end of a sleep cycle... well, i'll let you know if that ever happens.each day on the control week, i had between 7 and 10 cigarette breaks, each lasting between 6 and 12 minutes.
monday 9/15, i had 5 cigarette breaks.
tuesday 9/16, i had 7 cigarette breaks.
if i move my work shift to the end of my conciousness cycle, then the following effects will occur:i will be more alert while at work; to include the morning commute which has typically occurred in conjunction with sunrise.my work quality will improve at the expense of my personal project quality.work will seem less bothersome, potentially staving off burnout a little longer. unfortunately, this is a subjective qualification and thus will be difficult to quantify. i shall measure this by how difficult it is to work a full 8-hour shift.i will be perceived as having a better attitude, which is always a positive career move. also qualitative instead of quantitative. i shall measure this by observing my interactions with coworkers.
the entire week of 9/8 - 9/12 was business as usual. depending on who won the fight between my body and mind, i woke up anytime between 6:00 and 7:30 am, and wandered into work any time between 6:30 and 8:00 am. due to a feeling that can only
09/15/2008 09:28 PM -
due to a sort of bank error in j's favor, he was able to repay two of the grovers he borrowed during his job transition. i wasn't expecting my first payoff for another 2-3 weeks, so this was a welcome relief.
for those unfamiliar with deprecated legal tender, the joke is that grover cleveland appears on the $1000 bill. therefore a few "grovers" is ten times what a few "benjamins" would be.
a series of parts has been on my newegg "wish list" for some time, and i finally had a chance to push them into a shopping cart and check out. the parts should be here around friday, and include:
hitachi deskstar 7k1000 1tb hdd (32mb cache, 7200 rpm, sata 3gb/s, oem): the file server needs another terabyte. without going into any level of detail, we organize file type by drive and one specific file type now consumes two 1tb drives and is encroaching onto a 500gb drive. to that end, that file type is getting its third terabyte, bringing the file server up to a total of 6.5tb unformatted space. nine drives. sexy.
evga 780i (132-yw-e178-a1) motherboard: the newer, beefier version of the evga 680i i bought eight months ago and traded to j a month later so he could run his sli configuration. in his defense, he traded his existing (more expensive) mobo for it, but it didn't have the three pci-express x16 slots which were instrumental in my choosing of that line in the first place.
corsair cmpsu-1000hx 1kw modular psu: to replace the kilowatt power supply i fried recently, i'll be picking up this baby for a good $100 less than the last one. plus, it's modular, so i can avoid the dozens of spaghetti-like wires common to such psu's. it'll be good for airflow, which is important when you've got nine physical hard drives in one system.
patriot 2gb 240-pin ddr2 pc2-6400 sdram ("extreme performance") dimms: four 2gb dimms to replace the ones i had to scrounge up from my other systems when i installed 8gb ram on kc1, in connection with installing windows vista ultimate edition x64.
i'll be swapping out the cheaper 3gb in kcws for 4gb of higher-quality ram, so the blog will be down for about 20 minutes sometime this weekend.
of course, the motherboard upgrade means i'll just have to reinstall vista again, but oh well. if you wonder why, try installing windows, moving the c: drive to another computer, and booting to it. you'll get the idea.
i will once again have my six-monitor setup as i did before the great lab reorganization of 2008. plus the seventh screen for the laptop; plus the eigth if you count the crt across the room, which is used to crash-cart the servers in my freaking home server rack. it will be good.
i have about $1300 remaining. saturday, i should be getting paid another $2,000 (totalling $3300). minus bills and expenses for two weeks, i'll have about $2250-2500. my car is worth about $1000, optimistically. see how quickly i can bounce back and go right into saving for a car?
you know, so i can replace my pos car, which i planned to have replaced six months ago? yeah, that one. priorities, people.
09/11/2008 09:50 PM -
a mere five months since the 220,000-mile mark, about 66 miles a day. that makes nearly 20,000 miles since i bought the car.
i reiterate my point that i never planned to have the car this long. soon, i'll be going to a local car dealer who i've heard will finance people even when they have a repo on file. sure, the interest will be high; but it probably won't significantly outweigh the "repair budget" of the car i've got now.
09/08/2008 11:09 PM -
recently, i've been browsing the intertube with internet explorer 8, beta 2. i tried beta 1 several months back, but gave up on it because it didn't work with google maps. because this is a pre-release product and far from final, it's hardly time for a review... but i do have some thoughts:
good stuff:standards mode and compatibility view work exactly as expected, most of the time... though compatibility view doesn't actually render the same as ie7 or ie6... closer, though. i would say standards mode renders the page just like firefox, though i'm not sure they're at the same level of compliance, and i don't have firefox installed. now that ie is a standards-compliant browser, i no longer need it for testing my sites.zi255, my main blog url, renders exactly as it does on ie7 and ie6. that means both microsoft and i are doing something right.
perhaps it's my x-ua-compatible http header, set to "ie=7; ff=2;otherua=2"... nope; i just disabled it and the page continues to render and behave exactly as it was designed to. go, me!
ie8 beta 2 was released august 27, 2008; and can be downloaded here - free, of course. requires windows xp or higher, 32- or 64-bit.
if you've been using an old browser like netscape or mosaic, you owe it to yourself to see what bill's been doing to counteract the effects of the evil open source people. if you're an evil open source person, you owe it to yourself to cave into the power of raw capitalism and see what bill's been doing to move technology forward.
go ahead, you know you want to... click it.
09/08/2008 06:14 PM -
funny story. two weeks ago, j got a job offer and took it. the first two weeks were to be spent on the east coast, and he had three days to get there. due to the "vacation" he had previously been on, money was tight.
so i took out a payday loan to lend him some money (why he couldn't take out his own is beyond me). today i got paid and went to go pay it back... alas, the deadline was hours past and they had sent the electronic draft into my bank.
the draft had not yet gone through; i still had time. quickly, i wired the exact amount of the debit into my checking account. alas, wire transfers can also take some time. they should both clear sometime tomorrow.
which one will get there first - the debit or the credit for the same amount? only time will tell. fortunately, since my bank has some sort of objection to storing the actual times of said transfers (i suspect a db2 date field is being used), and they do all their math at the end of the day, i should be able to avoid an overdraft fee. after all, (x-y+y)=x, and x is not negative.
09/07/2008 06:41 PM -
while browsing newegg for a replacement power supply, i realized that i'll soon be able to upgrade my motherboard. you may recall that i had to revert from an evga 680i to a bfg 680i board seven months ago, and i lost my third pci-express x16 slot in the process. as a result, i've been having to live with four monitors instead of six ever since then.
this will be resolved by year's end. soon, i shall upgrade kc1 from the bfg 680i back to the evga line, and a newer model at that: the evga 780i (more specifically, the evga 132-yw-e178-a1) supports my existing core 2 quad q6600 cpu (codename: kentsfield) and my existing 8gb ram. it would be nice to have the option to upgrade to 16gb, but as i've just tripled my memory capacity anyway, i think i can wait another 6-12 months before i take that particular plunge. besides, the only 4gb dimms on newegg currently are $150 each; or one can buy them four at a time in their 16gb 4x4 bundle for a mere $500.
did i lay the sarcasm on thick enough there? yeah, it'll be some time before i look at that option with any degree of seriousness. besides, it's from g.skill. any upgrade where i spend that much on ram would require it come from patriot, corsair, or kingston. but i digress; back to the board.
it has 6 sata 3gb/s slots; though i'd likely only use one... maybe someday i'll upgrade to a 3x raptor or even velociraptor raid-0 alignment, but it's unlikely that would be any time soon - disk access has never really felt like a performance issue to me. besides, my existing hdd has a 5.7 windows performance index, which is braggy enough.
the board sports the three pci-express x16 slots i've missed so much; as well as an x1 slot and two old pci 2.0 slots in case i ever want to plug in something that's probably not even on the hardware compatibility list.
the board's reviews are favorable and i have experience with the product line; so i'm buying it... someday soon. i also plan to pick up four patriot extreme 2gb ddr2 dimms to offset the memory i had to scrounge up to get my existing 8gb, and to ensure all my other systems have a fair amount of ram. their existing memory will likely stay installed, but may be relegated to the ram ziploc.
09/07/2008 06:27 PM -
remember the file server problem i had a week ago? apparently the 550w psu from kc2 is powerful enough to run the whole rig. this came as a suprise until we realized that kcfs had about 12 drives in it when we tested it with a smaller power supply. so we put the 550w supply into kcfs temporarily, and it's back up until i get a new one.
i've decided to go with the corsair cmpsu-1000hx 1000w modular psu. it's about $100 cheaper than the last 1kw psu i bought, and it has the added bonus of being modular. no more having tons of unused power cables strewn about the server chassis, blocking airflow. heat has never been a major problem, but it will be nice to get rid of some of the clutter in there.
09/06/2008 09:30 PM -
have you ever noticed what wild tangets you go off on when you start clicking links a few levels deep? for example, i linked from sarah palin all the way over to a website that spells things out with buildings from google maps' sattelite feed. you can click the link to see an animated reference to where the above-seen buildings actually are.
i was somewhat disappointed that they only have one building for each character (multiple random ones woulda been nice); but it's still cool. it supports "find as you type", so to speak; as you type something in, the buildings populate below.
how the hell did i end up there? i'm not really sure, there's a window somewhere that got closed... something like this:
sarah palin's wikipedia talk pagelist of webby award winners2008 webby nominations (there was no link; wikipedia was incomplete; so i googled it myself. i was too lazy to update wikipedia)geogreeting was listed as one nominee for the "netart" category
09/06/2008 06:13 PM -
oh, great... one of my favorite websites in the "weekly" folder, realtimesoft's multi-monitor gallery, has just received what i believe to be its first spam entry in the 10+ years the site has been online.
this spam is in the form of a gallery entry, spewing forth propaganda for their pre-built multi-monitor rigs, specializing in day trading and (to some extent) gaming.
at least i'll give them one thing: they did use a good image for the setup the posted. this should be expected, as they are trying to sell a product; though it troubles me that their actual website doesn't seem to have such a good picture.
well, since i've gone off on a diatribe about their spam, i suppose it's only polite to counterbalance it with a link to their overpriced products: multi-monitors.com
09/01/2008 10:51 PM -
while scrounging around in my other systems to find memory for my new windows x64 installation, i traded a 2gb dimm for a 1gb dimm in kcfs, my file server. i don't know what happened during the swap, but it fried my 1kw psu.
the system boots with another power supply (though not even my 750w supply is beefy enough for the file server). i can't boot another system with the 1kw power supply... though i do find it strange that when i turn it on manually (by shorting pins 4 and 6 of the atx mobo connector), it turns on like it should.
there's gotta be some bad wiring in that psu. since it's worked fine for about a year now, it has to be something that's occurred recently. i tried jiggling all the wires and verified they were securely fastened to the molex connectors; but it was all for naught. when my income restabilizes due the grovers i lent j, which should be this saturday, i'll pick up another one.
momentarily, i was hoping the problem was the cpu. cpus are relatively easy to replace and even quad cores are cheaper than this power supply! alas, it is now my solemn duty to replace one of the biggest pita's to be found in a file server; the octopus of a power supply.
hopefully i can find a 1kw psu that's modular. all those extra cables and wire bundles really get in the way.
09/01/2008 06:45 PM -
four hours ago, i informed you i was beginning an upgrade from windows vista ultimate x86 (32-bit) to windows vista ultimate x64 (64-bit). shortly thereafter, an hour ago, i led you through the aggrivating process of upgrading. now that the upgrade is complete, i figured i'd clue you in on a few details.
there's something wrong with the image i have stored for vista ultimate x64 rtm, which i downloaded legitimately from microsoft connect. resultantly, i installed from another image, vista ultimate x64 service pack 1 release candidate 0 (vista ultimate x64 sp1 rc0, for those of you who despise microsoft's product naming scheme).
since the upgrade completed, i've been tearing apart my other systems in search of four 2gb ddr2 dimms. kc1 already had a 2gb patriot dimm and a 1gb corsair xms2 dimm, totalling 3gb (all of which vista x64 saw at first boot). that wasn't enough... so i moved some stuff around.
the second dimm was pulled out of my "memory bag", a ziploc baggie in which i keep all my unused ram. unfortunately, it had only a single 2gb ddr dimm. the rest were 1gb or smaller, and some were ddr1.
the third dimm was a pita. kcws, my web server, had two kingston 2gb ddr2 dimms installed, but due to running a 32-bit server os, could only address 3.25gb of it (see two rants ago for details on why). so i pulled one of them out and replaced it with one of the 1gb corsair xms2 dimms from kc1.
the fourth dimm has yet to be completed. kcfs, my file server, had the last of three patriot 2gb ddr2 dimms i purchased in march. i tore that out and put it in kc1. kcfs hasn't booted up with the new dimm installed, but i'm troubleshooting that now.
it was all worth it when i saw this. that's 7.9977 gb of useable ram, all of which is addressable by windows. i'm not really sure why that 2.3mb is still eluding me, but when you've got 3,560 times that much, who really cares? i'll just go on calling it 8gb. it's close enough. at least until i can find me some bigger dimms :)
just to make sure all this memory was addressable, i brought up my handy winver applet. physical memory available to windows: 8,386,188 kb. that's 8189 mb, or 7.9977 gb. as i said, that's close enough; i'm officially announcing my membership in the coveted 8gb club.
of course, there is a downside to the upgrade. as you may have read in one of my previous two posts regarding the upgrade to 64-bit goodness, vista sp1 rc0 expired two months ago. i'm not worried about it, though; as we speak my solution is 7 hours, 51 minutes away. that is all the detail you will hear on that matter.
your windows license will expire in 0 hours. hillarious. maybe windows won't deactivate itself like it did last time, as the expiration date was prior to the installation.
oh, yeah... obviously the websites were down during the memory swap. for those of you who wondered why, that's it. i was taking memory out of the webserver.
09/01/2008 05:01 PM -
like many early adopters, i've had problems with x64 versions of windows. last time, windows pushed all its device driver address space to the end of physical memory space, well above the 4gb line. there were devices installed that couldn't address 64-bit numbers, so they couldn't reach their memory. the resulting arithmetic overflow resulted in my hardware talking to addresses in low memory and kernel space. directly. talk about unstable!
i spent a good 15 minutes backing up my game saves, favorites, and projects folders. everything else is already on the file server.
so i just burned my vista ultimate x64 image and dropped in kc1's dvd tray. boot to cd: timeout. boot normally: windows detects the drive, but obviously can't read any of the executables on it because they're 64-bit. awesome.
so in hopes that it was a problem with detecting the boot sector via a bad drive (or something along those lines), i whipped out my trusty memorex 530l external dvd drive. of course "530l v15m64", the model number, appears nowhere on the external surface of the drive itself; i had to wait for my bios to tell me. no power cable. awesome.
so i go looking around the house in our assorted parts piles and bags and boxes, trying to find a power adapter that looks like an s-video jack. wierd, huh? okay, i found it downstairs. awesome.
i plug it into kc1. it detects the drive (no driver installation; unusual; spiffy) and informs me it can't run the executables on it. figures. i reboot and confirm the bios is configured to allow boot from usb devices. my bios doesn't have that option; but it did detect the usb dvd drive as a standard dvd drive, so that's good enough. awesome.
boot to cd: no disc. boot to other cd: timeout. snazzy. so i play around with moving the drive to other usb ports, power cycling, etc.; no joy.
momentarily, i sat turning the power on and off, wishing things would just go my way once in a while. suddenly, it happened. it booted to the dvd. i was back on track. awesome.
windows is loading files... the progress bar creeps eerily along the bottom of both screens on my primary video adapter.
damn. okay, freak accident, let's try again. i reboot... boot to cd... good. loading files again. very slowly; the red light on the back of my external drive informs me it's on a usb 1.1 connection. that's right, it needs drivers to run usb 2.0 and the 480mbps that goes with it. i can't install drivers at the bios level; so usb 1.1 will have to do. okay, so it's limited to (12mbps / 2) = 6mbps. the "2" by which i divided is figured as my headset was plugged into another usb port on the same usb host adapter. snazzy. i unplug the headset and the progressbar begins to move more quickly... 50%.... 60%... i'm estimating because there is no numerical representation of the progressbar's value; one can only guess as to what's going on at this point... 70%...
bsod. aww, crap, microsoft won't let me download this image again; the beta program has been closed for a long time now. just in case, i open microsoft connect. yep, the "downloads" link has been removed, just as they said it would. that's great.
so i look through the images folder... okay, vista ultimate x64 sp1 rc0. that's right, i was in the vista sp1 beta as well. okay, let's burn that puppy...
my laptop burns at 1734kbps (1.28x). that's godawful when you want to burn a 4gb image. half an hour goes by as i realize i may end up having to buy a copy of windows for once in my life. kc1 is running the beta key, kc2 is running a key i got from calling microsoft in an irate tone of voice, and the laptop came with vista home premium. what a mind job, windows costs nearly four times what it used to. then again, i make almost six times what i made when windows was $100... but i digress.
seven minutes remaining. i step out for a smoke to relieve the stress and anxiety caused by that 1.5gb of ram that's going to waste. looking forward to opening up the "memory ziploc" once more. i get back upstairs; two minutes left. 1:40.
09/01/2008 02:48 PM -
kc1, my primary workstation, currently has windows vista ultimate x86 (32-bit) installed. i'm sick of having 4gb installed and only 2.5gb of it accessible to windows .
this is due to memory consumed by all my devices; i.e. two video cards with 512mb each are 1gb ram. because the 32-bit can only address the maximum value of a 32-bit unsigned integer (2^32 = 4,294,967,296 bytes = 4gb), there is nothing more that can be done.
since 32-bit editions of windows can only address 4gb total memory, all device memory is subtracted from that total to arrive at the amount you can use. in my case, i have 2.497gb of addressable ram, meaning my devices are consuming 1.503gb of memory space.
according to mark russinovich, who was the chief software architect of winternals and co-founder of sysinternals (in other words, he's the guy who wrote process explorer), the extra 0.003gb comes from device driver developers who pursue memory addresses aggresively, not knowing how much they'll need.
i've confirmed with three sources that my vista ultimate x86 product key will work with x64. my hardware is all new enough that it should work and prevent any problems that happened last time i went over the 4gb mark.
my backups are done. the time is nigh.
09/01/2008 02:32 AM -
i've been playing with serf, the tool i created that tells me within seconds where i rank for a given query. here are some of the results i found.
i find it interesting that while my pagerank has actually been reduced over the past year, search traffic (especially from google) continues to increase. i guess they were right when they said pagerank wasn't everything.
when mv5 (the blog rewrite) rolls out, you'll be able to get this list (or something like it) automatically.
christmas dreamscene: #1 of 25,000 note: 544 searches; very popular and soon back in season.
rackable home file server: #1 of 39,700
factory warranty on your vehicle: #1 of 412,000
royal gorge wallpaper: #1 of 33,300
hardcore quad core: #2 of 194,000 note: #1 is my content, too
vista sp1 redist: #2 of 181,000 note: #1 is my content, too
major insurance provider: #2 of 1,250,000
look up item by fcc id: #2 of 262,000
installshield sucks: #2 of 46,200
c# trackback: #2 of 1,060,000
c# pingback: #2 of 46,800 note: #1 is my content, too
paint.net v4: #3 of 198,000 note: beaten only by the paint.net blog itself
php servlets: #3 of 2,360,000
root causes of road rage: #3 of 244,000
top rowcount: #3 of 302,000
p-6831fx laptop: #3 of 94,300
vista span mode: #3 of 705,000
okinawa drifting: #5 of 61,000
top x as parameter: #6 of 25,100,000
panoramic wallpapers: #6 of 562,000
illegal exhaust: #6 of 3,330,000
end of month report: #10 of 142,000,000
recent google searches: #13 of 33,000,000
aero on sp1: #7 of 768,000
programatically download file: #8 of 242,000
c# string contains: #9 of 7,400,000
windows server 2008 rtm product key: #10 of 281,000
non-impressive results that i checked anyway:
tech school red rope: #1 of 226,000
db2exception: #4 of 5,730
ns-bthdst: #3 of 3,390
home lab server rack: #2 of 105,000 note: #1 is my content, too
they set us up the bomb: #8 of 606,000
reduce sprintpcs bill: #11 of 767,000