forgetting my heart

forgetting my heart

When I was in college I spent a semester living in Germany and traveling around Europe. I started taking German in 9th grade, but 7 years later when I went to Germany, I still struggled with basic conversation. Many of my classmates grew up in German speaking families and they had a distinct advantage being bilingual. By the time I came back home though, I was fluent enough that I could carry on all my daily activities, eating, shopping, traveling, finances, etc in German. I was really proud of that accomplishment.

When I returned though, i experienced something unusual that I haven’t heard other people talk about, but there has to be a name for this. As the time since I’d returned from Germany increased, I didn’t have the opportunity to practice conversation, so I started forgetting a lot of it.

The funny thing is that when I forgot a German word, I forgot the corresponding English word for a while too. I actually had a lot of trouble just having a normal conversation in english.

It may not have looked like it from the outside, but inside my brain I struggled to have simple conversations while searching for the English translation of the German word I’d forgotten.

I feel like I’m experiencing something similar with Michael. He dealt with his disability from his brain surgery for nearly 3 1/2 years before he died. He never drove again after that surgery and it was his number one goal to drive his Jeep. He had purchased it only a month prior to being diagnosed.

I transitioned from his adventurous partner in crime to his supporter and fetcher as he recovered from surgery. Without going through the whole timeline for the past 3 years, I’l just say that he had a brief period of about 6 months when he was happy, energetic and able to help with things around the house, walk in the woods, and go shopping in Costco with me.

Walking in Frick Fall of 2019.

But as the cancer and the effects of radiation and surgical scarring all progressed, he gradually lost abilities a little at a time. Fast forward to the last 6 weeks and he was unable to get up out of bed, or shift his body in the bed.

He was completely dependent on first nurses and techs in the hospital, then myself and caregivers at home for 100% of his comfort needs.

In between the woods walks and the bedside care, his abilities declined stochastically … unpredictable in timing, but certain in it’s progression. Each time there was a change in his abilities or needs I would initially experience the same quality of fear, anxiety and anger all over again, only to then get used to his new normal.

In the beginning I couldn’t have imaged where we would be this past month. And the more time that goes by even the weight of that sentence will change…I can’t say he died 2 weeks ago which is fresh enough that even strangers give me hugs if it happens to come up. No one gives spontaneous hugs or cards when it’s been 2 years since someone died.

Here’s the weird part…now that he’s gone and I’m in the house alone, I feel…normal. I mean, I’m sad, and I think about him all the time…but the last 9 months were so traumatic for me with continuous anxiety about his decline.

He’d have a decline and i’d wonder how was I going to take care of him at home? Right up until the day I couldn’t take care of him. Even on that day I was worried that they’d try to send him home with me, but I was out of options at home.

I got used to Michael being a fixture in his spot on the sofa…always there…always right there when I came home and opened the door. He didn’t go upstairs for the final 6 months because he was too weak.

But his mind took longer than his body to accept those kinds of changes. He was frustrated and sad and just wanted to be around as long as possible for his children and grandchildren.

I sat here wondering why I feel so “normal” after all of this? I think it’s like the Vergessen phenomenon (Vergessen = forget in German). I think as I forget the emotional trauma I experienced, I forget the person he was at that time as well.

Hospice was 100% saturated with caring for a dying man. It was hard and sad but needed to be done. Save for a few moments, I have not willingly put my mind back in that time period to relive what we did. It’s like my subconscious is protecting myself by not allowing me to go there with my thoughts.

At the same time, remembering when Michael was physically independent, with a sharp wit and smiling most of the time…that’s painful too. It makes me sad to think about it for more than a few moments, so I don’t. In time I will, and there is no hurry.

So in forgetting my own experiences being his partner, lover and caregiver…and all the associated loss that I experienced even while he was alive…I’m forgetting HIM during that time period as well.

It hurts to remember him being disabled. I just got used to his needs and didn’t think of him while taking care of him, even as we struggled with bedside commodes, wheelchairs and ramps, and having a lift installed which took 6 months with permits and contractors (oh my).

Can you put a price on the amount of life and activity that having the lift enabled? Our last dinner out was just 3-4 weeks before I took him to the hospital (that was just 6 weeks ago) …was it worth the savings drawdown to push him down the street to get a hamburger? Listen to live music? Watch one of the bridge beams arriving and go all the way down to the park at Braddock and Forbes for one day? Absolutely…those are all priceless memories.

So just like the Vergessen Phenomenon, as I forget how hard these last weeks and months were, I also forget what he was like during that time. Not willfully.

So just like those months where instead of having a conversation in English I was alone with my thoughts in my head….Instead of struggling with sad memories of him sick or well…it’s just me here in my house like I was before we started dating.

“I” feels eerily normal. And if I think about THAT…that makes me wonder if this is normal? I’m changed, but I’m not devastated by his death, I was devastated by his last 3 years of life and I think he was as well.

“I” feels eerily normal. And if I think about THAT…that makes me wonder if this is normal? I’m changed, but I’m not devastated by his death, I was devastated by his last 3 years of life

My friend Sarah sent me this poem the other day and it resonates so well. And I think I’m Ok, but I’m not 100% sure, and that’s OK too.

i carry your heart with me

e.e. cummings

i carry your heart with me

i carry your heart with me(i carry it in

my heart)i am never without it(anywhere

i go you go,my dear;and whatever is done

by only me is your doing,my darling)

i fear

no fate(for you are my fate,my sweet)i want

no world(for beautiful you are my world,my true)

and it’s you are whatever a moon has always meant

and whatever a sun will always sing is you

here is the deepest secret nobody knows

(here is the root of the root and the bud of the bud

and the sky of the sky of a tree called life;which grows

higher than soul can hope or mind can hide)

and this is the wonder that’s keeping the stars apart

i carry your heart(i carry it in my heart)

Swimming Through Change

Swimming Through Change

What do you love about swimming?

For me, I’ve just always loved being in the water and playing games with my friends. Starting from when I was 7 or 8 years old, I walked to our neighborhood pool, met my friends, and we played cards during adult swim, and sharks & minnows when there were enough of us there, and I swam on the swim team until I was 15 years old.  The swimming pool was the fabric of my summer existence.

During & after high school, other priorities came up, other sports, other interests, academics and eventually a job.  My first job out of college was with Voyageur Outward Bound School where we took groups of teenagers on backcountry wilderness canoe trips.  We taught them life skills and expedition skills. But my favorite days were teaching the kids whitewater kayaking skills. It seemed that again, water became the fabric of my existence.  It’s a miracle I never developed trench foot during a 3 week expedition in which it rained every day but one.

Dusting Off the Clubs

By the time I was 26 I longed for work that was more meaningful and impactful and in a roundabout way I decided to try to get into medical school.   The day I took my MCATs (Medical College Admission Test), I thought to myself, “If I’m going to become a doctor, I need to learn how to golf.”   So I dug around in the garage, found some dusty old clubs that my parents had owned and enjoyed when they were 20 years younger, and took myself and a few balls up to the ballfield that I had played in as a kid…the same ballfield that was on the way to the pool from my youth.

Let’s just say that it didn’t go well. I decided I would be a non-golfing doctor.

Diving Back in…

Fast forward five years, I had matched into residency, and somehow made the bizarre decision that training for a triathlon, rather than pure running for exercise, would give me more free time.  What was I thinking??  I started riding my bicycle to the rec center and took up swimming again after about 10 years away from the water sports I’d loved during my childhood and those first years after college.

It was…just as I had remembered it.  Smooth. Silent. Silky. Weightless. Magical. Mystical. Mysterious. Consistent. It was an activity where I could both disappear from the demands of Emergency Medicine training, and immerse myself into something familiar and comforting.  “You have a nice stroke,” was something I heard often.

Let’s fast forward again.   Since then…Back Surgery. Total Immersion. Pain free Swimming. Triathlon Coach. Youtube Host, interviewing legends like Mark Allen, Terry Laughlin, Gwen Jorgensen, Leanda Cave. Did I mention Mark Allen? Kirsten Sass. Volker Winkler.  (Look them all up)

My pursuit of triathlon became it’s own career path, and throughout it all the water was my place that was both familiar and challenging. Endless improvement and ingrained patterns from my youth. New friendships and YouTube “fame” had people introducing themselves to me at the World Championships…”You’re Suzanne Atkinson, I love your podcasts and interviews.”

Holding Things Together

The water was the glue. It always brought things back together. Even things that had fallen apart, like my body from a bucket tear disc injury, back surgery, car accident, physical therapy, ankle arthritis (those soccer moves!), and most recently being a temporary caregiver for my partner who had a cardiac arrest (he’s fine now, 1 in 10,000 survivor of 3 cardiac arrests…now we train together), and navigating my mothers progression with dementia, aricept overdoses, and the relentless march of time.  I submerged myself in the water and the water made me whole again.

At 50, I suddenly feel fit and fresh. I’m not in the same physical shape or the same weight I was at 47, or even 48…but 50 feels different. It feels fresh.  It feels ready. It feels forward. I’m optimistic.   The water is still there as it has been the past 45 years of my life.

What do I love about swimming? Everything.

 

What do YOU love about swimming? Post in the comments…

 

This blog also appears on FreshFreestyle.com, but without the internal blog links.

Life At the Foot of Squirrel Hill

Life At the Foot of Squirrel Hill

Where else can you find a Kosher Dunkin Donuts?

I live just at the bottom of Squirrel Hill. Saturday mornings my partner Michael and his 13 year old daughter have a routine of going to the (Kosher) Dunkin Donuts for breakfast then going to the climbing gym together. Normally I go with them, but I worked yesterday and today.

We got the bronze alert of a system wide disaster so I know about the shooting before most of the city. However when I texted my partner…he already knew…the Dunkin Donuts is just 2 blocks from the Tree of Life Synagogue. My mothers caretaker drove past the synagogue just 30 minutes before the shooting. I drive past it twice a day every time I go visit my mother.

It’s Mr Rogers Neighborhood … for real.

If you havn’t read enough stories and articles about Pittsburgh, and specifically Squirrel Hill… it’s an amazing place. I have had many opportunities to move away from my hometown of Pittsburgh and live anywhere I want… since ER physicians are in demand all over the country. I always have returned here not only because my family is here, but because I simply LOVE Pittsburgh.

Shadyside, Squirrel Hill, Edgewood, Regent Square, Point Breeze, East Liberty … these neighborhoods have surrounded my waking hours for the past 20 years.

Collectively they comprise a diverse old immigrant and new immigrant city, multiple ethnicities, and terrain unmatched by any other city…more bridges than Venice, more stairs than San Francisco, Canton Avenue home of the steepest street in the world, and the only place where commuting hassle is measured not in how many miles or minutes you spend in the car, but how many rivers you cross. The working class blue collar roots still ground the city in a “hard work works” attitude, yet it’s also home to progressive technology firms such as Google and Uber.

Finding My Home

Before I started medical school, I lived in the suburbs. I looked forward to my days off work, when I was studying to take the MCATs, when I could drive into town and study at the 61c, a long standing independent coffee shop in the middle of squirrel hill on Murray Avenue.

Two years later when I started school at Pitt, I was so excited to move to the East End and start an exciting new part of my life. After residency when I moved back to Pittsburgh, some people were not shy to suggest I move to Dormont or the South HIlls to be near my new job.

But to me I didn’t think for a second that I would live anywhere other than the East End. So many of my lifelong friends, even from prior to medical school lived in the area within a 2-3 mile radius, including my mother who excitedly moved to Shadyside the year I started medical school.

For a year and a half while renting, my good friend Tom Cahill and I looked for my “dream house”. It was literally 18 months and 1 dream later when I described to Tom a house that was in my dream…two weeks later I was a first time homeowner…in the East End of Pittsburgh.

Even now on my days off most of my daily routine occurs in squirrel hill…my bank, the post office, my eye doctor, the grocery store, multiple coffee shops, people watching, FRICK PARK and (the Mac Miller) Blue Slide Park are some of the activities we all share up at the top of the hill.

Not a day goes by that on some level, I don’t think about how fortunate I am to have found a house I love, in the city, but just far enough outside, in a thriving, vibrant, small town feel community…the East End of the city.

There are  no words for how I’m feeling…

I am saddened with a complete loss of words at the lives lost, one a former colleague and the others no more than 1 degree of separation (this is Pittsburgh after all). However, the past two days, I’ve been impressed and soothed…but not surprised, but the shows of community support. Vigils being held in the pouring rain, organized by high school students from the public city school of Alderdice at the foot of Murray Avenue. All ages, all religions, all nationalities … holding one another as family and expressing their fierce pride in our city, our home.

I worked all weekend and missed the opportunity to attend the moving candlelight vigil at Forbes and Murray on Saturday evening. But tomorrow I know what I’m going to do. My therapy-dog-in-training and I will head right up to the place we call our home and hand out fuzzy kisses and free pets and pay our respects to those who lost their lives in their place of worship.

Thank you for reading.

Instinct is Learned

Mr. Reynolds is a vivid 83 year old who lived alone at home. He walks everyday int he morning first thing before he has a small cup of coffee. His kids bought him an ipad and he uses it to browse the Washington Post, the Wall Street Journal, and the Pittsburgh Post Gazette while eating breakfast.

Every morning it’s the same breakfast…toast with honey and a small cup of yogurt. Then he’s ready to start the day, just when the rest of his neighbors are waking up.

Today however, he ate hist toast and his stomach grumbled, louder than usual.  He thought to himself that he’d better get to the bathroom quickly… and he was right.

I met him an hour later in a gurney with the chief complaint of ‘bloody diarrhea’.   He looked great to me, comfortable, normal blood pressure and heart rate, he wasn’t pale, no pain at all. The only finding was maroon colored stool.

I sent off a bunch of labs thinking he had one of 3 main intestinal related issues…bleeding ulcer, bleeding polyp / diverticula, or hemorrhoids.  Hemorrhoids were less likely since the blood is usually bright red.  Likewise lower intestinal bleeding is often still bright red since there’s a short distance for it to travel and the bright red color is maintained.  Hmm…that leaves a bleeding ulcer from the stomach.  int he stomach the blood is exposed to stomach acid, which turns the iron black.  Black stool is a bad sign..but maroon stool is even more ominous, as the blood is accumulating quickly enough to let some bright red blood mix with the blackened blood turning it a dark shade of maroon.

But Mr. Reynolds looked great.   Many bleeds are brief and stop on their own. He’d had no further episodes since the first one.

After an hour his labs came back. His hemoglobin was 9.4.  A little on the low side but not overly concerning.  I looked up old labs and only had ones from years ago.  His old, presumably “baseline” hemoglobin was 14.  But I had no way of knowing how quickly he had become anemic.  For all I knew it could have been gradual over years or a few months.  Surely he’d not lost 5 units of blood since this morning because his blood pressure and heart rate were normal and he felt fine.

Then his nurse grabbed me.  “Doc Shazam,” she said forcefully. “Mr Reynold’s blood pressure is 90/50”.  “How does he look?” I asked.  “He still looks fine.”  Reluctantly, due to the IV fluid shortage, I asked her to start a 500ml fluid bolus.    I hesitated because lots of folks when they are relaxing in the ER, especially if they’ve taken home blood pressure medicines, may develop a blood pressure a bit on the low side.  I’d hoped that was his case, but this nurse is good.  She’s not one that comes to me for every little thing and she’s a great problem solver.  IN this case her problem solving included telling me his pressure was on the low side.

“Let’s add a lactate and redraw his hemoglobin,” I called towards her desk.   She heard me.  “OK,” she smiled and strutted away to draw some labs. She seemed happy with my orders, i think they were in line with her concerns.  But I still thought I was overreacting, wasting resources, wasting a half-liter of precious saline and the bag it comes in.

15 minutes later, I learn his lactate is 6 and his hemoglobin is now 9.  “That can’t be right,” I told her.  His lactate can’t be 6…he looks FINE, I told myself for the umpteenth time.  But that hemoglobin…could be lab error I thought.

I started putting the pieces together and while the patient looked fine, and had responded nicely to the fluids with a  pressure now of 114,  I’ve seen enough patients get very sick, very quickly once they cross a threshold.  Unfortunately they don’t come with gauges that tell us where that threshold his.

I decided if it was my family member in that room, I wouldn’t want the doctor to wait until he turned downhill, scrambling to replace blood and calling in resources exigently.

I ordered a unit of packed red blood cells and a pack of platelets since he was on aspirin and plavix, called the admitting team who had already seen him and updated them on what I’d learned and what my concerns were.   He thanked me and was in the ER within 5 minutes to assess the patient himself.   His repeat lactate was 5.3 suggesting he’d begun responding to fluids and blood and his repeat hemoglobin climbed to 10.

When I went into his room the GI team was there and they took him to the GI lab a few hours later.

***

Fast forward to the end of my shift and the hospitalist came down to give me an update.

“You were absolutely right with Mr. Reynolds.  The GI doc found bleeding varices in his stomach that they had a hard time controlling. I did a CT and found cirrhosis and signs of portal hypertension. We’re transferring him to tertiary care for a TIPS procedure.”

“I had an instinct,” I told him.   I’m so glad I listened to it. It was subtle but in retrospect it was absolutely the right thing to do.

“Instinct is learned behavior,” he proclaimed.   “You’ve seen it before and you knew the right course of action. Thank you for helping him.”

It made me appreciate that medicine really is a practice. You can know the right thing on paper and on board exams, but in the real world, cases don’t present like books and numbers and vital signs don’t follow the right patterns.   The wisdom of experience only comes from seeing many previous patients crash quickly and rebound slowly.

Mr Reynolds was lucky he came when he did and that it wasn’t my first year on the job.  I went home humbled and scared that I’d taken his case too lightly, but ultimately I’ve learned again and strengthened that clinical instinct.

 

A Living History – Eleonore of Bavaria

A Living History – Eleonore of Bavaria

Nuremberg chronicles - Nuremberga

She was silver-haired and weepy-eyed, with bluish gray bags under he lower-eyelids. Her grandson sat staring at his ipad. He looked like an Irish bartender–with a red beard and a toothy smile. He was patient and spent over five-hours at her bedside, with nowhere specific to go.

She spoke perfect english with a slight european accent, but the more I listened the more familiar it sounded. Taking her full history, I asked extra questions as an excuse to listen to the pleasant sing-song voice. She stressed and drew out her ‘S’ sounds with a soothing tone that reminded me of the Kaa, the crafty, sly snake from Ruyard Kipling’s The Jungle Book.

Satisfied that I had her work-up sorted out in my mind, I finally asked her where she was from.

“Nuremburg,” she said, swallowing the “em” syllable and turning the city into two syllables instead of three.

“Ich kann auch Deutsch,” I carefullly replied.

“Ser gut!” she said, smiling.

I dared not go any further with my German…it’s been 25 years now since I lived in Keil, but at one point I was fluent in High German.

I glanced at her birthday on my patient sticker sheet, and realized she was a “tween” during World War II. Nuremburg was at the center of Allied bombing raids between 1943-1945. During the age when my step-daughter is just getting acne, wondering if boys are creepy or a little bit cool and running for student council, my patient was hiding from Allied bombs with over 90% of her city destroyed in just 1 hour during one of those raids.

Her parents moved a total of 3 times during the war because their house kept getting destroyed. It’s a true miracle that she survived and that she was here in my ER, with her Irish themed grandson and a red-headed granddaughter as well.

I admitted her without fully knowing what was causing her pain, and hoping it was not a life-threatening spinal infection. I would have loved to spend a few hours getting to know her better and understand what her life was like…when did she finally escape the war and did she ever enjoy the freedom of running for school council instead of running for her life? And how do you treat acne during a war?

Learning React

Learning React is hard.

On one hand the code looks like HTML.  But it’s not straight HTML, it’s got other code decorators injected into it. As a result the browswer can’t read the files as it can read straight (vanilla) javascript.

An intermediate compiler/transpiler is needed to convert JSX (the HTML looking javascript) into JS that the browser can render.  This is what Babel is used for.

The first few times I tried to teach myself React, I got really hung up on JSX. I had a hard time keeping straight what it was used for, and it’s appearance being so similar to HTML kept confusing me. In reality it’s not HTML with some javascript thrown in, it’s JavaScript with HTML tags thrown right in.

In normal JavaScript you would have to encapsulate any HTML you wanted to send to the Document/Browser Window in string tags, which starts to look pretty messy. JSX allows you to not only write straight HTML markup in your JavaScript, but also create your own HTML tags, called Components via the React library. Now that I understand it’s purpose, it makes a whole lot more sense. If it’s confusing to you, stick with it.

Basic Starting Code

To start working with React, simply include two javascript libraries, one for React itself and one for ReactDOM to render what we are creating onto the browser window (the DOM).

You’ll need to include either a 3rd javascript library, or work with your tooling scripts to allow Babel to transpile your React code (JSX) into vanilla JS.

You can use these files locally by downloading them from here: https://facebook.github.io/react/docs/installation.html

<!DOCTYPE html>
<html>
<head>
    <title>Learning React</title>
    <script src="./js/react.min.js"></script>
    <script src="./js/react-dom.min.js"></script>
    <script src="../../js/browser.min.js"></script>
</head>
<body>

    
</body>
</html>

Don’t Let the Tooling Derail you

It can take time to wrap your head around the tooling options that are available.  What is “tooling?” Tooling is the set up of your local system to automatically compile your code, compact your JSX into vanilla JS to be use by your local or remote file server, a “linter” that will automatically check your syntax as you go, and so forth.

When set up correctly the right tooling can make your job very easy, but until you understand the purpose and function of each piece of tooling, it feels like a lot of extra code just to write some javascript.   Since javascript is supposed to be the language of the web, setting up a local React dev environment with the right tooling feels like a big step back in time.

But … they tell me it will be worth it!

Basic React Building Blocks

“Hello World”

Hello World is the traditional first step in learning any new coding language or framework. What’s the simplest way to get text on the screen.  In react it is a two step process. The first step is to simply create a “target” for your text by creating a single div with a name in your index.html file.

 

<div id="app"></div>

 

Next you tell ReactDOM to display “Hello World” to that target. If you’re writing this as a single file, simply create a script tag and mark it up as text/babel like this:

 

This is why we included the 3rd Javascript file above, so that the text/babel script will be correctly transpiled into javascript.

Now we “render” some text to our target using code that appears similar to HTML…but it’s actually JSX. The library used to render the JSX is ReactDOM, our 2nd included library above. We haven’t actually written any React yet, this is just the set up so that our React code has a way to be rendered and a target to go to. The render method takes two paramenters. The first one is basic HTML, and the 2nd is the target, which we’ve already created before.

 

ReactDOM.render(

Hello World!

, document.getElementById('app'))

Now if you open this index file in a local browser, assuming you’ve got proper script paths to react, reactDOM and babel, you should see your Hello, World! text on the page.

(A nice html server is

httpster

, that you can install with npm).

Here is the full index.html file up to this point:

<!DOCTYPE html>
<html>
<head>
    <title>Learning React</title>
    <script src="./js/react.min.js"></script>
    <script src="./js/react-dom.min.js"></script>
    <script src="../../js/browser.min.js"></script>
</head>
<body>
</body> </html>

Node.js: Redirecting to new page after an XML Delete request

I couldn’t think of a clearer way to title this post, other than describing the action I was trying to accomplish.  It took me 4 days to sort this out from hints I received online (Free Code Camp Gitter Help channel), the MDN Javascript documentation and a host of Stack Overflow questions.

The project I am working on is the Free Code Camp Voting App project. it’s the first of the full-stack apps, I used MEEN (Mongo ,Express,  EJS (or your choice of binding script), Node).

I first attempted this app 18 months ago, and failed miserably. Normally failure is an opportunity for learning, but it was so painfully challenging at that point because I barely grasped each component of the stack and getting them to work together was incredibly confusing for me.   I even used Yoeman, which SHOULD make it easier…but in reality it just made it more confusing for me. I was not ready to use that framework since I had a very thin grasp of how all the parts connected to each other.

Prior to this my only experience with full-stack was using Rails.   Some familiarity (but far from expertise) with Rails gave me a perspective of what I could / should be doing in terms of modularizing my application code.   JavaScript, however, allows you to make those decisions on your own about how you would like to configure your folders, scripts, public assets, routes, etc.

I ended up with what i felt was a reasonable blend of decent modularization, but also chunks of code contained in one file so that I was able to keep the parts straight. Perhaps future projects I’ll feel more comfortable making things more modular.

So here is the basic folder structure I opted for in my applicatoin. I’m NOT suggesting you do it the same way…this is simply how I ended up doing it and it’s working OK for right now. I’m sure i’ll make modifications , or possibly go back to yoeman, clementine.js or maybe try Sails.js for my next app.

fccVote2
-app
--poll.js  (this was catch all JS for the app..>I ended up not using it at all)
-bower_components  (front end scripts stored locally)
--chart.js
--chroma.min.js
-config  (files for authorization & authentication using passport)
--auth.js
--passport.js
-models (models for mongoose/mongo collections)
--index.js  (ties the other two in)
--poll.js  (poll model)
--user.js  (user model)
-public
--assets
---favicon.ico
---styles.css
--js
---chartPoll.js (again I ended up not using this, instead used embedded script tags)
-routes  (self explanatory)
--index.js
--polls.js
--users.js
-views
--pages (ejs templates)
--partials  (ejs partials for nav bar, header, footer, etc)
.gitignore
package.json
server.js
todo.txt (used webstorm's "TODO:" syntax to track bugs and todo items)

I started the project by working from the Scotch.io tutorial, Node Authentication with Passport.   I had done that tutorial once in the past, and it went well, so I rushed through it more quickly than I should have this time to get something propped up real quickly that i could use.  But once i got it working, I ignored the user sessions until after I had the voting routes & controller code working well.  That served me well, because once the app was mostly functioning I could then concentrate on allowing actions only for authorized users depending on the route (posting a new poll should only be allowed for authorized users for example)

The next task I tackled was using mongoose for the first time in an app, that is, not a tutorial.  This was not as difficult as I imaged it would be and I think in time it will be easier in the long run.  I think one of the big advantages is transparency of making the connection and closing the database…all that is done for you with Mongoose.  I’m still not fully aware of what other steps it saves, since straight vanilla node.js driver mongo is not really all that challenging (minus callback hell).

At this point I needed to get some data into my database (using mLab, but could easily use local installation of mongod), and I didn’t want to fuss with the front end.  In all the mongo documentation, they provide a small database collection creation script that you run prior to running the commands.  

========================

This post is a draft I started a few months ago and can’t readily recall all the details I wanted to include. However there is some good reminders in here and hopefully they will help some others, so I am publishing it anyway

Free Code Camp’s Front End Certificate

I’ve been involved with Free Code Camp from nearly the beginning. I stumbled across an article by Quincy Larsen about how difficult it is teaching yourself to code. The thing that stood out to me was that he acknowledged how much time can be wasted, and progress stunted, but jumping from one tutorial to the next or one language to another without really learning the things you need to learn to becoming a well versed coder.

I have been a programmer since the age of 12 when I first entered some game contests programming in Basic using an Apple ][e computer.  We didn’t own a computer then, save for some ancient IBM thing that ran lotus   1-2-3 on a flip down keyboard and a monitor that looked like an old oscilloscope.

Yet I still struggled getting up to date  on current web technologies for interactive applications with the end user.

 

Before med school I worked for a year as a “database systems analyst” which was a fancy title for what I actually did.  I programmed hand-held bar code scanners for custom applications that worked with our company’s larger Computerized Maintenance Management System.   I had to learn a new coding interface for these devices, and had to know our own code well enough to integrate these cool little tools with the system software.

 

When I held a meeting for our sales staff to update them on the handheld scanners (about the size of shoebox for a pair of baby shoes), I passed out name tags in bar code.  They had to scan them to find their own name tag in order to learn how the devices worked.  It was really a lot of fun and I’m thankful I had mentors who taught me so much about programming interfaces, user interaction, database programming and design and more.

 

But it also poisoned me…I have enough knowledge of how the back end works that any time I have an idea for an application or interface, I know just how I’d like to implement it… in 1997 technology.

 

But catching up to web 2.0 and beyond has been a years long pursuit.

 

All this while still working as an ER physician and a triathlon coach means I do it in fits and starts.  Free Code Camp tracks my progress for me which is also a huge asset of the website.  And it’s free!

 

Check it out if you want to learn or improve your javascript!

Learning D3 – essential skills for the Javascript Programmer

Learning D3 – essential skills for the Javascript Programmer

Recently I’ve been experimenting with and trying to learn the D3.js library in order to create ziplines and develop some relative expertise at Free Code Camp. D3 stands for Data Driven Documents. As a former cartographer and information graphic artist in the 90s, discovering the possibilities with D3 for browser based interactive applications is like Geraldo Rivera discovering Al Capone’s vault! (except he didn’t…)

While it’s seemingly straightforward for those who have climbed the learning curve, “getting it” takes some experimentation, practice and intuition. Several reasonable tutorials exist for learning the library but its fair to say that whether one speaks to you at this moment depends on your prior javascript experience.

My first attempt at creating a bar chart with D3 was held up mostly be json data extraction and a standard array…pretty basic data manipulation as far as javascript goes, but because all the existing D3 tutorials I found had explicitly named key:value pairs, it took me two days to figure out that d.name and d.value as used in the examples were the same thing as d[0] and d[1] in my simple nested array structure that did not have named keys.

Small setbacks like that can be extremely frustrating, but it does seem it’s part of the learning experience.

So here is my short, and growing list of fundamental D3 tasks that should help you learn to not just follow or copy a tutorial, but start to manipulate the DOM and your data to create the visualizatoins you want.

My personal goal is an understanding of D3 that is good enough to not have the coding “get in the way” of creating the visualization I want.

Basic D3 skills

1. Know how to import the library into your JS project

<head>
    <script src="http://d3js.org/d3.v3.min.js"></script>
</head>

2. Manipulate the HTML DOM elements, similar to JQuery

HTML:

<div class="infobox">
<p>Here is where we will say something.</p>
</div>

JavaScript:

d3.select(".infobox").style("display", "block");	
d3.select("p").text("This bar has a value of " + rect.attr("height") + " units.");

3. Create a simple data array of one dimensional elements to use in your test code

JavaScript:

for( var i = 0; i < 25; i++ ) {
	data[i] = Math.floor(Math.random()*100);
}

4. Using SelectAll, create a new set of rectangles or circles (try both)!

<svg.selectAll("rect")
.data(data)
.enter()
.append("rect")

5. Give them a fill color, width, height & x,y position (for rectangles) or fill, x, y center and radius (for circles) and display them on the canvas. (added to snippet from #4)

svg.selectAll("rect")
 .data(data)
 .enter()
 .append("rect")
.attr("x", function(d, i) {
 return i * 21; })//Bar width of 20 plus 1 for padding
 .attr("y",0 )
 .attr("width", 20)
 .attr("height", function(d) {
 return d; }) //Bar width of 20 plus 1 for padding

Steps 4 & 5 above constitute the very common “selectAll + data + enter + append” sequence that will allow you to generate some self-sufficiency at creating simple D3 documents. When you can do this for a new set of data within a few minutes, that is, you’re no longer debugging the code, and simple looking up reference material and writing from scratch, start keeping an eye open for interesting APIs or data sets that you can create new data sets from.

You can begin to dress them up by implementing best practices for information graphics including a proper scale & labels for your axes, a title, and margins or padding so the chart can “breath”.

GDP Bar Chart with D3

Screen Shot 2015-05-05 at 1.15.14 PM

While this isn’t a tutorial, I hope that this list of basic D3 skills and snippets helps you get oriented to the larger task of creating your “dream charts” with complex data.

Please leave a comment or link to any examples or codepens or gists you’ve created.

Two Months of Setbacks and Growth

This past 2 months has been a LONG two months of ups and downs, frustration & doubt and small nearly imperceptible successes on a day by day basis.

I’m far far far from where I expected to be at the end of April 2015, but then again many things have happened that I didn’t plan on.

Comparing where I WANT to be with where I AM is a huge source of frustration and anxiety for me. Not only physically (strength) wise, but also activity, yard work, personal projects, a book I’m co-writing, time and attention to my athletes, spring flowers, spring cleaning and the list goes on…

I don’t have this figured out by any means, but I know there is definitely some learning in here somewhere. I’ve ben listening to (and following along) with a lot of meditation podcasts (my favorite being ‘meditation-minis’) and the common theme that I’m picking up has to do with letting things go, setting things aside, putting things behind me, being OK with where (and who) I am now.

Part of me wishes I’d started a journal when this accident happened because I’ve been through so many ups and downs, but I don’t think I’d have enough time in a day to put all my thoughts down in words. I’ve just decided to absorb it all one day at a time and be the me that emerges each day when I open my eyes.

Some times it’s not who I wanted to be, but there’s not a lot I can do about that. I’m thankful for the sun, friends & athletes with patience, a caring boyfriend that knows how to wash dishes and do laundry, kitties that keep me cozy and warm and a big park to take walks in and decompress and think. Or not think.

And hopefully I’m done with viral respiratory illnesses for another year or two…what a setback this past week as been. So frustrating.