Wednesday, June 6, 2018

It's All So Simple (or YAFDSL/YAFSML)

I think that part of my problem with "modern IT" is the proliferation of "simplifying" technologies. Yeah, by itself, any given simplifying technology can be a boon. However, when you're in a position where you work with multiple, not highly-related tools, instead of having to learn one, complicated technology, you wind up having to learn multiple simplified technologies. So, now, you have to keep straight all these freaking "dialects" of simplified technologies. You have to  remember where they overlap with each other (and the parent technology they're simplifying), where they differ, their individual shortcomings — both in general and in relative to the technologies they're simplifying — and idiosyncrasies. Further complicating things is that all of these simplifying technologies tend to be rapidly evolving ...often so that they're essentially re-implementing the things they were designed to simplify away. It all becomes especially problematic when your position requires you to rapidly switch from one such simplifying technology to another.

Seriously: how many simplified markup languages do I need to know. How many flavors/reimplementations of those SMLs do I need to know. And it's not just text-formatting implementations, it's all the goddamned domain-specific languages (great, you're both pythonic and you both offer escapes to the underlying python, but you both use slightly different syntaxes and escaping to get to the underlying python).

When I came back from PTO, I found in my task list "re-do this automation in the automation framework's (Jenkins) native job-control language." All I could think was, "great, yet another fucking DSL to learn and keep straight from all the others."

Even that last thought reminds me of the first time I encountered YACC: "what's that," I asked. "Yet another compiler-compiler".

It's not even all that new a problem. When I first started dealing with text-formatting tools, SGML was the big thing. HTML was designed to provide a simpler method that was sorta inspired by SGML. And, over time, as each revision came out, we got things like CSS and XHTML which, essentially, bolted a lot of SGML's complexities and learning-curves back onto HTML. There was also the fun of learning TeX and then LaTeX (both really great when you wanted to create device-independent — "write it once" — document-rendering ...something that the proliferation of markup and simplified markup languages isn't helping).


Monday, June 4, 2018

Always Check Your Work (Order)

In news of "this is why you always read the estimate before authorizing the work"...

During the middle of May, we went to Vegas for a ten-day trip to take in a three-day EDM festival plus related shows before and after the festival. While we were gone, the DC area got stupid amounts of rain. In one 24-hour period we got 7" of rain and in a further 48 hours, the three-day rain total went up to 11". So, when I came home and my wife's car was poppping alerts, I wasn't super surprised. Even though the car was street-parked on a hill — such that there was no possibility of it actually getting flooded — it was still a lot of rain. That volume of rain often finds ways to get into vehicles that are parked for the duration.

What I was surprised by was when, on our way to replenish our vacation-bare refrigerator, the car completely quit. First the A/C fan cut out. Then alerts for the power steering, brake-assist, AWD, throttle, etc. all popped. As I limped the car to a safe pull-off — a semi-vacant strip-mall — the alerts went away ...because the electrics completely quit, taking the instrument panel with them.

I called the dealership where we got the car. When I'd bought the car, I'd paid the extra $3K for the extended warranty. They gave me the number for a towing-company they work with. I called the towing-company. When the dispatched driver called to say he was five minutes out, I called Uber. While the tow-man rigged our car up onto the flat-bed, we caught the Uber over to the dealership. This was two Saturdays ago, now.

Dealership gave us a loaner and, because it was a holiday weekend, told us it would probably be Tuesday before they'd have a chance to look at it. Tuesday came and went and no call from the dealership's service department. First thing Wednesday, I called to find out where the fuck the estimate for my car was. Around lunchtime, they mailed me the estimate. The total expected repairs were expected to come to a little over $4,000: alternator, serpentine belt, front-struts, alignment and battery ...nearly 75% of that total was the estimated labor cost.

I replied back to the email with commentary:

  • "That's a brand new battery: it shoul accept a charge just fine. If it needs to be replaced already, I'll need to smack another garage around for this part of the repair costs."
  • "I bought the warranty-extension to cover the mechanicals through 6yr/60,000. The car is less than six years old and has less than 45,000 miles on it. Losing an alternator at this point in time seems really premature - almost as premature as the warranty-covered loss of the clutch at 33,000 miles. Are you telling me that none of this is covered?"
So, the service representative said he'd check on the warranty-coverage. Meanwhile I'm thinking, "you presented me an estimate for $4,000 and you didn't even bother to see if the warranty I bought through you guys covered anything??"

Two days pass and I don't hear anything further from the dealership. I decide, "fuck this waiting," and call back to ask the status. "My" service-lead had apparently gone on vacation and hadn't passed the ticket down. They assigned me a new lead. We went over the estimate on the phone, and, again, I had to bring up the warranty. Again I was informed that they needed to contact the warranty guarantor.

Another couple days pass and it's now Friday with no word back. So, I call for another status check. I'm told they're still waiting on the guarantor. I note that I'll call again, Monday afternoon, if I don't hear back from them. I didn't hear back from them by lunchtime, so I called (at 13:30 - no point calling during lunch-hour). This time I'm told that the guarantor's adjuster is due to arrive any time, now, to check/ok the work. They'll get me an updated estimate depending on the adjuster's findings.

They actually did call me a little before 16:00. Even better, not only was the $1000 associated with the alternator parts-and-labor covered, so to was all the other stuff (with the exception of the warranty deductible and the cost of the wheel alignment). In short, my $4,000+ initial estimate drops to a little less than a $300 outlay. And, about that I'm happy.

The thing that gets me is, had I not pushed back, I'd have been on the hook for $4,000+ worth of repairs. Why the hell wouldn't they just automatically do right by me? Why the hell did I have to push to get what was due me from the warranty? I mean, had I not pushed for them to verify the coverage, I'd have essentially paid for the repairs twice: once for the unused warranty and once for the repairs themselves. 

Further aggravating is that it's been nearly ten days to get to this point. Granted, they'd given me a loaner, so I didn't have to rent a car during the period nor strand my wife while I worked had I not been able to afford to rent one. But it's still annoying to be stuck in a loaner for that long. Don't get me wrong, the loaner isn't shitty, but it's definitely the base-model ...and our car very much is not.

Saturday, May 26, 2018

Monsoons an Christmas Lights

It appears that neither of our cars much cared for the 7" of rain in 24 hours and 11" of rain over a three-day period during our ten-day trip to Vegas.

As expected with my sixteen and a half year old convertible, I found water in the spare-well under the cargo-deck of my trunk. Fact of convertible-owning life is that, as they age, they start to leak. Still the amount I found pooled under the spare tire was far less than I'd feared. There was less than half an inch of standing-water at the deepest part of the puddle as my car sat parked on our moderately up-sloped driveway. Only really concerning thing is that, when I put the key in the ignition, the ABS and DSC warning lights were both lit. Drove the car around the block to make sure that the brakes were actually working. So, it seems either the sensors are moisture-damaged or just still wet.

The bigger surprise was my wife's Mini. It will be six years old this coming December. When we started it up, yesterday, it was complaining that it was unable to charge the battery. At the time this error came up, the local service-facility we use was closed for the day (well, their electrical tech was gone for the day).We were going to drive it to the shop, today, if the indicator stayed on. Came out after returning from morning errands to find that the alert was no longer showing. So, we opted to drive it to the grocery store on a route that would take us closish to where we get it service figuring "if the alert returns, we'll just head to the service facility". As we left the neighborhood, the first sign of trouble popped up: A/C fan decided "I'm not actually going to stay running at 'high'; I'll run at 'low' and indicate that I'm running at 'high'." Not a fatal issue, and far less worrying than the "not able to charge" alert of the previous day. Drove onwards to see if the problem would clear itself. As we approached the end of a lengthy downhill stretch of road, first one error cropped up, then another. Lost the power-assist on the steering. Then the ABS indicator lit. Then the AWD indicator lit. Then the DSC indicator lit. Then the throttle stopped responding. Was able to get the car off the road using the engine's idle-throttle power. Got it up a very slight grade and into a little shopping plaza's parking lot. As we were rolling to a stop, the instrument cluster winked out.

Once parked, I got out my phone to call the service-facility. They gave us the number of a towing-company to call. Called the tow-company and they estimated a 60-90 minute response. The car was becoming quite warm and stuffy as it sat A/C-less on the open parking lot in the 90° heat and 78% humidity. I decided to see if the windows were at least working. Naturally, they were also stricken. So, we opened all the doors to get some airflow. Noticed there was a McD's in the plaza and opted to seek shelter from the heat in there while we waited for the tow to arrive.

A couple minutes after placing our order for drinks and sitting down, the driver of the tow-truck called to verify our location and let us know he was about five minutes out. Not bad: maybe fifteen minutes from call to arrival when we were originally told 60-90. As he was prepping the Mini to go up on the flat-bed, I called Uber. The driver arrived just as the driver was readying to put the flatbed into its "ready to drive" position. We got to the service-center about ten minutes before our Mini did. By the time the tow-truck driver had offloaded it and turned it over to the service-center, we had the paperwork for our loaner-car in hand. Presumably, we'll know around lunchtime Tuesday what's up with the car. Really hoping it's just a "needs to dry out" situation and not a "need to completely overhaul the primary electrical bus" kind of situation.

C'mon to the 21st Century, Citi

So, recently, I opted to apply for an airline rewards card issued through Citibank. It's been... "interesting," thus far.

For starters, when I followed the application-link that came from my preferred airline, it took me to a Citi-hosted web page. The page itself wouldn't render in any of my normal browsers. I had to switch to a browser with all privacy-plugins deactivated and with most in-built security-settings disabled. Yeah. Good start.

Once I was able to actually login and fill out the form, I received a "thanks: we'll have our decision to you within 7-10 business days" exit-page. Seven to ten days??? For the past several years would-be providers of revolving-credit services have typically been able to make their decisions in less than 7-10 munutes. Why the fuck does Citi take days to do things everyone else takes minutes to do. I mean, that's several orders of magnitude to make the same kind of decision. It's not like they were offering me an outsized line of credit, either. Hell... the companies that provided my my solar loans only took a few minutes to generate their approvals. So, again, "WTF, Citi?"

When I'd applied for the card, I'd assumed I'd have it in hand for my trip to Vegas. Between the protracted decision-making time and the fact that they USPSed the card to me (again, Citi, "WTF: everyone else does this shit via FedEx or 2nd-day USPS because they want to start earning money off me - why you delivering the card via standard ground mail??"), I did not have the card in hand for that trip. Citi coulda made fees on ten days worth of hotel accommodations, several very nice restaurant tabs, quite a few bar tabs not to mention all the Uber rides and concert merchandise. But, nope, they had to be slow.

At any rate, we got home from Vegas and found the new card waiting in the stack of mail our pet-sitter had brought inside for us. I got the new card out of its envelope and activated it via Citi's card-activation portal. I set up all my profile information. I set up my security-verification questions and answers, various pins and other secondary authenticators. And, because I prefer to use my phone - rather than physical cards - I installed their e-wallet. I'd have just used my regular e-wallet, but Citi apparently thinks that only their e-wallet will do (presumably, they don't want to split fee-making opportunities with other e-wallet services), so, "whatever".

Once I'm outside the card's trial period (during which I earn the airline's mileage bonus), I'll probably revert to using my regular card(s). Those cards work with my preferred e-wallet and are just generally better service providers.

At any rate, today was the first farmers market we could hit since getting back from Vegas. It was a "refill the pantry" kind of trip. I figured, "use the new card and start knocking out my obligation towards getting the airline reward." Used the card with eight different vendors with no problems. Got to the last vendor we were going to hit, and my card was declined. Pop open Citi's e-wallet and it tells me "security-hold placed on card: please contact this number."

With much annoyance, I hit the number in the app. It rings through and puts me into their customer service call-tree. First thing it asks for, before routing me, is my credit card number. All I can think is, "seriously? I called from your fucking app and it couldn't have put me into your routing system with that information already populated?" So, I punch in my card number. I then answer the first security question (c'mon, guys, I've got an authenticated device on my person - why aren't you leveraging that capability). I'm then placed on hold while a represetative becomes available. Five minutes pass and eventually a CSR picks up the line.

First thing they ask for is my card number. I point out to them that me reading my card and CCV number out in a public place kind of defeats the purpose of calling in to verify my card's security. They audibly shrug and ask for both bits of info. I supply them. They then ask for further authenticators. I again preface my reply with commentary about the wisdom of being asked for this while I'm in a public place surrounded by randos. Now that I'm sufficiently authenticated, the CSR says that he has to forward me to the correct department.

Mmmmmkay... So, your app had me dial a number that wasn't even the correct department and before you could decide I needed to be routed to a different department, you had to authenticate me?

First CSR does a warm hand-off to the next CSR. Next CSR is apparently wrapped in cotton batting because I could barely fucking hear her. I ask her adjust her volume since my phone's maxed, I'm in a noisy place and she's barely audible. She does so. Once we're able to hear each other ...she asks for my account and CCV numbers. I don't bother to point out the stupidity of having to do so since she was getting me via a warm-handoff from someone that had already collected that information. I don't bother to point out the stupidity of having to audibly dictate that information (again) in a public place. She brings up my information an realizes that she needs to hand me off to yet a third representative.

Second CSR does a warm hand-off to third CSR. If you guessed that the third CSR needed me to dictate my card and CCV numbers, you'd be correct. Further, this CSR needed to send me an SMS to further verify me. Unfortunately, apparently Citi's SMS system doesn't think that my phone number is a valid phone number. So, she can't adequately authenticate me (???) via that method. Fortunately, since I'd set up a bunch of secondary authentication methods when I activated my account, she was able to verify me using one of the yet-to-be-used ones. She then informs me that they need to ground-mail me a paper form that I need to fill out and ground-mail back to them before they can unlock my card. Incredulous, I ask, "why did you issue me a card and provide an online activation mechanism if that wasn't going to be sufficient to actually use my card ...and why did you let me make eight charges before deciding 'whoa, that's enough, there, buddy!'?" She says she's sorry for the situation but she's bound by policy. I note to her that I will be contacting my airline and probably canceling the card once I've claimed my reward. She again states she's sorry that I feel the service has been inadequate and to look for the form in the mail.

Hoorary for quality customer service. Hooray for great security procedures.

Eventually, we complete our errands — doing the remaining transactions with one of my less asstacular credit cards — and return home. After unpacking everything and settling in, I get out my laptop an visit Citi's website. After logging in, it tells me "card is on security-hold, pleas call...". I figure, "worth a shot: maybe they can at least explain this morning's debacle." So, I pick up my VOIP phone and dial the number.

This time, no call-tree an no waiting on hold. Explain basic situation to CSR. He asks for my secondary authenticators so he can open my record. He then asks for my cell number so he can send me a one-time authenticator-number ...their system still thinks my number is invalid. So, he calls me on my number. He rings through, verifying that the number on my account is valid. He updates the information in my account to that effect. Now able to get into the particulars of why my account got put on hold, he notes that they were supposedly not able to validate my SSN. I can only express minor incredulity — "why would you issue a card if there was a problem with my SSN that wouldn't allow me to use my card." He reads to me what they have on file and I validate that the information is correct. This time, his system is able to validate my SSN (where it couldn't previously for whatever fucking reason). He indicates that with things validated, he can remove the hold and that there's no further need for an exchange of ground-service paper-based mails.

While I'm thankful that things are resolved, I ask him why there was so much of a runaround, previously. Obviously, he couldn't really provide an answer to that beyond, "I honestly don't know." I think him for his assistance and we conclude the call. Regardless, I'm obviously sub-impressed with Citi's policies, procedures and IT back-end.

Seriously: if this were 1998 or maybe even 2008, this might have made some kind of sense. As it is, though...

Tuesday, April 17, 2018

I've Married a Toddler

It's with distressing regularity that my wife reminds me that I have married a toddler. She's excitable. She has a very low tolerance for delayed gratification. She has a strong tendency to "mine?" everything. She has a tendency to break and/or lose things in her zeal to explore newly-arrived packages ...whether hers, someone else's or something that's supposed to be a shared possession. All of this was on display, today.

We bought "tickets" to a music festival that's happening near the end of spring. I place "tickets" in quotes because this festival doesn't issue traditional tickets. Instead, they issue bracelets with embedded RFIDs. The festival is multi-day and the RFID-enabled bracelets are your only means of gaining entry to the festival grounds. The festival's ticket FAQs — and the Ts&Cs on your ticket purchase-page — inform you that if you lose the bracelets, damage them in a way that renders the RFID unreadable or render the bracelet unwearable, you're fucked (my words, not theirs). While I imagine you're not actually 100% fucked, it's clear from their wordings that they'll make fixing the warned-against actions a pain in the ass.

At any rate, the parcel containing our "tickets", festival guide and assorted schwag arrived, today. Donna, being her usual, excitable self was wanting to immediately tear into it. I, however, was still in the middle of finishing my day's work. She asked if she could open it while I worked.

Given the amount I've paid for the festival "tickets", hotel, airfare, etc. plus the above caveats around the "tickets" dispositions, the prospect of letting her open the package without me was a "not gonna fucking happen" proposition. After scolding her to stop taking the package apart and to put it down and leave me to finish what I was working on (how this festival is being paid for, neh?), she opted to head over to the neighbor's house for a couple hours.

She came back a few hours later, as I was starting to do my "end of work-session" closing-tasks. She was still antsy and giving me a rushed feeling. Not something I tolerate well at any time, least of all when I'm trying to exit a work-session cleanly. So, as she started to hover, it aggravated me to the point of barking at her to wait while I closed out. She sat down on the couch, package on her lap, fidgeting ...which, since she was still in my eye-line, was continuing to aggravate me.

What she never quite seems to get is that aggravation equals distraction. Said distraction slows the speed with which I am able to do things that require concentration (like closing-out my work-session).

Finally done, I started to get up. Seeing me begin to move, she, of course, interjects with "can I open it, now?" I replied, "not yet," and stalked off to sort out the lights and get my phone's camera ready. I'm not really an "unboxing" kind of person, but I have friends that I know were wanting to see the package since they're unable to go. I also wanted picture-evidence in case anything was damaged or missing.

I started disassembling the package, taking pictures as I went. Interjections of "ooh, what's that," and "can I see that" ...and grabbing at things and throwing "metal hands" while I'm trying to take pictures ensued. While it's great that she's happy about the festival and excited, her expression of it was a bit grating while I was trying to sort out "what's what" in the packaging. Really didn't want to accidentally discard or damage anything important, so I wasn't exactly appreciating the distracting antics.

After I identified what of the now splayed-out contents were tickets and what were other things, she immediately grabbed one of the RFID bracelets. She wanted to try it on to make sure it fit. ...And for some completely unknowable reason, decided it would be a good idea to test out the cinching of one of the bracelets. FUCK!

Fortunately, she hadn't cinched it to the point that it needed to be cut off. She hadn't cinched it to the point that she couldn't get it back on once slid off. When I incredulously asked what the hell she thought she was doing fucking with the cincher, she tells me, "I wanted to make sure it would fit on my wrist".

Yeah, that was not exactly the response that I was expecting. I was a bit dumbfounded by the response, actually. Mustering what credulity I could, I replied, "you were concerned the bracelet might not fit" — presumably by being too small —, "so you tightened it??" Sheepish expression on her face was really all she had left. She babbled some further explanations, but they all made less sense than her immediately prior statements, so I couldn't quite "process" them.

At any rate, everything verified to be present (and now someowhat fucked with) and "documented" I packed the festival kit back up and stuffed it into the case I'll be packing my laptop and other critical items into. I'll have to look at it a bit later to make sure I didn't miss anything in all of the festival's documentation or the welcome material in the kit-box.

Saturday, February 17, 2018

No Color, No Car

It occurs to me, I've never bought a new car that wasn't a color.

My first car was a hand-me-down. It was a grey Chevy Citation.

My second car was the the first new car that I paid for. It was a Regatta Red Nissan Pulsar NX.

My third car was a used car. I had to buy it because my, then 8 year old Nissan had suffered a financially untenable mechanical failure. I needed a car ASAP and needed it for less than the repair-costs of the Nissan. I ended up with a Charcoal Honda Civic.

My next car was a "by choice" purchase. Another Honda Civic, I selected a pearlescent Aztec Green for its color.

Thanksgiving of 1997, I was visiting family in Pennsylvania. At the time, my father was looking to get himself a new car. We stopped by a VW dealership ...that shared space with a BMW dealership. I happened to notice a Z3 in the show room. Hadn't been intending to buy a car - wasn't really even looking for one, but the color caught me. Asked to take it for a test drive. Ended up returning to DC with a (limited edition - one of 300 made globally) Dakar Yellow Z3.

When time came to replace the Z3, I decided I needed something notionally more practical. Of the many cars I tried, none really felt right ...until I took a ride in a co-worker's brand new e46 (2000 model year). He let me take it for a drive and I really liked it. I still wanted a convertible, though, but orders for such were no longer available on the 2000 model year. Put deposit down and ordered a 2001 convertible in "Techno Violet Metallic". Nine months later, it showed up and I traded in the Z3.

Six months later (and just two weeks after 9/11), it was stolen. Was able to order a replacement, but it was a 2002 model year. It arrived in late December of 2001. That's the car I'm still driving, today.

While I've purchased two other vehicles, since then - both for my wife - only one has been a non-color. She insisted on black (she's a goth and generally color-shy) for the first vehicle that we'd hoped would end up being a sprogling-hauler. At least it had (aftermarket) purple and black seats.

When it started to die in 2012, we bought a Mini. Wife, again, wanted a non-color vehicle, but I vetoed. We ended up with Chili Red (but with black "rally" stripes).

Thursday, February 15, 2018

Gotta Wonder...

Ever since the shooting in Vegas, last year, any time a mass-shooting makes the news and I see various people screaming "something needs to be done", I can't help but wonder, "was the shooter's the real intent to prove that there's really nothing you can do to prevent mass shootings":
  • Background investigations? Passed them.
  • Use of aftermarket stuff to increase rate of fire on otherwise non-cyclic weapons? Yup.
  • Using a cache of pre-loaded weapons to obviate the question of limiting magazine-sizes? Yup
  • Using a cache of pre-loaded weapons to overcome the types of heating problems you encounter when you make a civilian-grade weapon operate at near-
  • military fire-rates? Yup.
  • Inclusion of weapons in the cache that wouldn't have been covered by a ban of weapons that *resemble* military-grade weapons? Yup.

The only real thing he "missed" - at least as far as what's made it to news outlets - was including 3D printed weapons, magazines or bump-stocks. ...He also missed out on using homemade bullets. Basically, stuff that's fairly trivially done and no amount of regulation is *ever* going to prevent (at least, not in the case of an adequately-determined malefactors). Stuff that's really only going to get easier to do as technology advances.

I mean, sure, you could try to wholly ban guns, but how well have bans on alcohol and drugs worked out over the years. And, really, that's part of the irony of the "do something" crowd: many of the same people that say "legalize drugs because prohibition just doesn't work" are among the throngs that think that either outright banning all guns or just the "particularly awful" ones will somehow magically work where previous prohibitions have failed.

Am I saying it won't cut down on the number of incidents? No. It would probably greatly cut down on the number of newsworthy incidents. Problem is, it would probably also make it so that when incidents do happen, they're far more likely to be Vegas-style ...or, come by other forms of mayhem (Boston 2013, anyone?).

Saturday, November 25, 2017

The Cycle of Holiday Shopping

I like shopping from home. In looking back at the holiday shopping seasons throughout my life, I find that my 20s and early 30s were probably the real aberration in my shopping behaviors.

As a kid, I grew up in a borderline rural area. I say "borderline", because the town I grew up in was about 35,000 people ...but it was the single largest town in the county. The closest "city" was the next county over - separated from my town by a river and 30 miles of very busy interstate highway. I put quotes around city because by the time of my teen years, changing economic conditions meant that said city had shrunk below to 60,000 residents. To truly be a city, my recollection was that there needs to be 100,000 residents within an incorporated entity. Not really sure, at this point, though. I think the reason that said "city" was referred to as a city was because it happened to be the state capital. Can't have your capital not be a city!

I guess I try to say I grew up in a "borderline" rural area because I don't like to admit I grew up in BFE. However, the prevalence of Trump placards and bumper-stickers the past two Thanksgivings means that I really can't hide where I'm from. Also probably counts, in large part, why I never felt at "home" where I grew up. Mom says I chafed to get away from there from well before my teen years. I know I always felt out of place there.

Digression aside... Being in that type of area meant that, until the mall and big-box retail explosion of the 90s and early 2000s (after I'd graduated college and moved away from the region), there just wasn't a huge amount concentrated shopping. There were plenty of mom-and-pops and other little stores in each town's "down town" areas, just not the kinds of concentrated-retail that typifies the Black Friday meltdowns that seemed to become the norm in the 2000s. As a kid, Christmas season meant waiting for the Christmas catalogues to show up from Sears, JC Penny's and a couple of other, lesser outlets. When the catalogs showed up, it was always "ignore all the grown-up/practical stuff" and seek out the colorful toy-sections of the catalogues. Then dog-ear the pages containing the stuff I wanted (to make it easier for mom and dad to find) and very carefully circle the specific items desired. I place that emphasis there because there were some Christmas snafus that resulted from failure to be precise enough in marking desired items. Was mostly a grandparent problem. They meant well ...and, unlike a pair particularly harried parents, one season, never resulted in a complete "I thought you were buying the presents this year" gaff.

After college, I moved away from home to find work and, frankly, to finally escape the chafing confines of where I grew up. This seemed to coincide with the major rise in destination shopping (90s was when Mall of America became famous, after all). It meant slogging through traffic to get to malls whose parking lots were designed for the rest of the year. It meant dealing with crowds of people who didn't really seem to have any particular place to be, just "out". Lastly, it also meant waiting in line for registers that, like the parking structures, were mostly designed for the rest of the year.

I've been working in IT, to one degree or another, pretty much my entire adult life. I've worked for a couple of ISPs (one that was an early hosting-services provider for e-commerce) and companies that provided support services for them ...and for online retail companies. So, early on, I was aware of possibilities for avoiding malls. And, as they came more into my price-range and stocked more of the stuff I was interested in, I switched to shopping almost exclusively through them. I wasn't really concerned about contributing to the death of small businesses - as, by that time, Walmart and the big-box stores had already put most of them on the endangered species list, any way. I was mostly concerned about avoiding the cranky throngs ("merry fucking Christmas!"), the traffic and everything that makes the holiday run-up unpleasant.

With the backlash against Black Friday nonsense - and the realization that it's kind of silly to try to force shoppers into doing a year's worth of business in the waning hours of the Thanksgiving holiday - it's managing to become even less onerous. And, while I've usually waited until the "hmm... If I do the overnight option, will it still get here in time" or the "if I ship ahead, will it be there when we get there" was a real concern, this year I actually dispensed with things early. Everything I'm buying is bought, already, as of this writing (and, I have enough time that I may have actually paid it all off before 2017 turns to 2018).