Day 1 – touching teeth

I woke up in OR recovery getting ice packs on my face. The lady who carted me held my hand, wished me a good recovery and set me up with “the button” – that would deliver wonderful hydromorphone through my IV. I was lucid enough to understand the instructions. Face was a little numb, but most of me was numb at the time from the meds, so I’m not sure how bad it actually was. I don’t know how long the surgery was but according to my mom it was around 4 hours. I remember the doc saying the actual surgical part of it was around 2 hours.

I had to clear my throat a lot right after surgery which felt weird but I was able to do it. My jaw was wired shut with bands so I couldn’t move it too much. But as long as I clenched down a little bit, clearing my throat was easy. Doc said it would be sore from the breathing tube.

My legs were being compressed by something, it felt like a shiatsu massage. There were pressure wraps going up to 50psi on and off, apparently to prevent blot clots in the legs. I kept them on the whole stay, because seriously, shiatsu massage.

massage

Then I noticed something I’ve been missing for the last 10 years – the gap in my teeth was closed! I couldn’t fit my tongue through and I could feel my lower row of teeth hitting the backside of the upper row. This was the best feeling of the day next to the self-regulated hydromorphone I could deliver every 6 minutes. This also confirmed in my somewhat lucid mind that it was over. I felt a wave of relief after that and waited to get rolled out.

1510841_10203235632275149_2812802286763314632_n

I chilled out in OR recovery for a while and then got carted down to the main recovery room. Mom and fiancee (Adrianna) met me there shortly after.

aw yeah, the button. o2 tent to make breathing easier

Can’t see much, as I can’t really spread open my lips, but look!

they touch!

Just looking at my no-longer-open bite in a little mirror made this whole experience thus far all worth it. Surgical staff came to check on me  and hospital staff started taking vitals. Doc said I was doing really well and bloodflow and feeling was quickly returning back to my face. Bite looked good too.

I read a lot of other blogs before going into this surgery, and most patients had very little to no pain after this surgery. And they were right, there’s very little pain, some discomfort, mostly a lot of inconvenience. I had rubber bands in my mouth already, lucky not ligatures or a splint so I had some leeway in moving my jaw and talking (mumbling).

I slept for a while until some food came. Eat (drink) the hospital food, as much as you can. I got lucky and I was able to drink out of a foam cup pretty soon after the surgery. I was on a liquid diet for today. But since not eating since 10pm the last day I was pretty hungry. One of my surgeons came in and told me to power drink water, because I’d have to start peeing otherwise they’d have to cath me. I would most definitely rather not, so I just drank as much as I could. Apparently they also catheterized me during surgery, but I didn’t remember nor feel any post-op pain.

The first night pretty much went like this, over and over again:

  • Squeeze the hydromorphone button
  • Drink some water (helped with brief periods of nausea after meds)
  • Try to pee
  • “Drink” some of the other things (broth, water ice)
  • Sleep from exhaustion of trying to eat
  • Hear a little voice “Devin” from the nurse/surgeon who was gently going to wake me up to check on me

I eventually peed in the portable urinal they gave me, so I wouldn’t have to get up through the IVs. Win! No catheter needed. The surgeon scared the pee out of me.

Mom and Adrianna went home, I started watching World Series game 2. KC won which was awesome. Doc said he wanted me to try going for a walk. I never did the whole walk-with-IVs-hooked-up which was a fun experience. Tried to get as much sleep as I could, but had to wake up for vitals at 4am.

Surgery

Woke up at 4:45am to get to Thomas Jefferson University Hospital, where my surgery was scheduled for 7:30am. There was an emergency surgery in front of me, so I did end up waiting for a bit. My  surgeon came in to update me and that’s when I officially found out that after the workups I did on the 13th, that I was definitely going in for Lefort 1 Osteomoty, no splint, no graft, and no ligatures. I was kinda psyched about that because it meant a shorter recovery time.

mom and me – before
before – just a little bit, right?

Said my goodbyes and got carried off to the OR holding room. Got reaffirmed every step of the way about my name and date of birth, to make sure that I was getting the right surgery 🙂

The staff at Jefferson were all very nice, very professional. I talked to the anaesthesiologist, the person who was going to intubate me during the surgery, chief surgeon, and some other staff. Got wired up for IV, which I had a feeling was going to be the most painful part of this whole ordeal from reading other blogs. I forgot to take my glasses, but I don’t think they would have let me have them anyways, so I listened to Family Feud on the TV.

Relaxed for about an hour, then got wheeled to the OR.

I only remembered the OR for a few minutes. Saw the giant operating lights, the 10 or so people that were all getting ready to cut into me. Got lifted onto the operating table, which had wings to support all my limbs. Oxygen mask got placed over my head and that’s all I remember before waking up.

Getting ready

After being in braces for a year, it’s time to correct my anterior open bite with jaw surgery (Lefort 1 Osteomoty)

Here’s Day -365, which was on June 16th, 2013. I just got the braces put on.

Day -365

Here’s October 9th, 2014, getting my surgical lugs on. Usually they are rubber, but going into surgery they have to be metal.

it’s really not that bad

Look at how much my teeth came together! But there’s still work to be done to get them safely down to my bottom teeth.

I’m scheduled in at 7:30 tomorrow for surgery. Nervous, for what I feel is no reason. But my brain still thinks I should panic. I mentally prepared for all of this, and I’m somewhat excited just to get it over with.

drush uli gets “access denied” using vagrant

I noticed randomly “drush uli” would just result in “access denied” when Drupal was inside of a Vagrant machine.

The funny this was, if I waited a little bit, and tried the user login link again, it worked fine.

The problem is the Vagrant machine’s clock may be only a few seconds ahead of your local machine.

So the token that uli generates isn’t valid until then.

Solution: install “ntp” on both your host and inside the Vagrant machine.

dynamic drush alias files

Alias files are useful. If you have many sites on a remote server, instead of manually adding them to your alias file every time, write some code to automatically generate them.

Now whenever a site is configured on your target server, you will automatically have the alias!

consider versioning your .drush directory

Our team uses Drush frequently during the entire development workflow for doing things like grabbing database dumps of sites and running commands – drush make, registry rebuild, custom company-specific ones, etc. – and in the past everyone would have to manually download or copy them to their .drush.

Now, we version the .drush directory, so when a new developer onboards, they can just checkout the .drush directory from version control.

This is incredibly useful for

You can build a very powerful devops toolkit across all team members since everyone will have the same Drush setup!

a faster alternative to sql-sync

Where I work I probably load environments about 50 times a day. Testing bug fixes, data migrations, reproducing errors, failure analysis, and so on.

Even if I can save 30 seconds with an automated database reload process, it will add up.

There’s been work on improving drush sql-sync, including https://drupal.org/project/drush_sql_sync_pipe

The bottleneck is that drush sql-sync works with temporary files – meaning it has to:

  1. Connect to the remote machine
  2. Perform a sql-dump to a file on the remote machine and compress it
  3. Transfer that file to your machine
  4. Restores the dump to database

The problem with this is that each step is executed consecutively. It would be better if all these steps were performed concurrently. Drush defaults to this method because it is compatible with most systems. If you’re a power user though, you may want a find a faster solution.

What we’d like to do is

  1. Connect to the remote machine
  2. Perform these steps at the same time
    1. Read the file remotely
    2. Compress on the fly
    3. Stream it to your local machine
    4. Uncompress on the fly
    5. Pipe sql to database

I wrote this little script that accomplishes just that and a little extra for dumping locally. The key is piping data instead of saving it temporarily. Note that this only works on Linux/Mac.

Put this script somewhere (maybe ~/bin) and chmod a+x it.

From within your site directory, run fastdump @someAlias

This will

  1. Delete all the local tables (to ensure tables that don’t exist in your source are gone)
  2. Restore the database from an alias
  3. Run updates

But quickly! The next step for this would be making it into a Drush command instead of a shell script.