In the years I’ve been listening to podcasts, I’ve only found 2
podcast clients that I’ve really liked: iTunes (back around 2005-2007)
and a bash script that I wrote which simply copied files downloaded by
podget onto my iPod nano. Google Listen on my Droid X (Android 2.2) is
tolerable, but only barely. I think my requirements are simple. I want
to put in URLs and have the client get all the podcasts in that URL
and stick them in a queue. I want the client to refresh every N hours
and add new files to the queue. I want the client to automatically
download each file in the queue. Once I listen to a file, I want the
client to delete it from my device. I’d like a configurable option to
be able to save a file, while I’m listening to it, so if I am
listening to something that I want to hear again, I hit a save button
and it won’t automatically be deleted. If I don’t like an episode, I’d
like to hit ‘next’ to have that podcast deleted and the next one
started. Finally, I want some statistics about which podcasts I’m
listening to, which ones I’m skipping, and then some suggestions about
which podcasts I might like. A product from Google should be able to
do this. Unfortunately, I can’t reliably tell which podcasts I’m
subscribed to. There is a ‘subscribe’ button in each one, and when I
click it, it changes to ‘unsubscribe’, but then when I back out and
come back, it says ‘subscribe’ again, so I’m not sure if I am
subscribed or unsubscribed. When I subscribe, the podcasts show up in
Google Reader, and I don’t want them there. I understand the idea of
reusing Google Reader since it is a RSS/Atom reader, but I never
listen to podcasts on my computer. I don’t know what happens if I mark
something as read in Google Reader. Does that mean it won’t show up in
Listen? I haven’t figured it out. Each time I start Listen, it seems
that a different podcast starts, rather than starting where I left
off. Well, it’s inconsistent. Sometimes it works, sometimes it
doesn’t. Skipping a podcast doesn’t delete it, although there is a
config option for that. Maybe I’m just doing it wrong. Most
annoyingly, it doesn’t automatically download all the podcasts, so
when one finishes, I have to wait for the next one to start buffering
and if I’m driving and I happen to be in a poor 3G service area, that
might take a while. Maybe this should be my first Android project?
My commute to work is 25 minutes each way, so I’m always looking for a
podcast to listen to. I’ve been a fan of the
43folders website for years and Merlin Mann
recently started a podcast called Back To Work
with Dan Benjamin. Dan Benjamin, it turns out, is the founder of a
network called 5by5, which he says has been called
“NPR for geeks”. The shows I’ve listened to have all been sharp and
entertaining so far. I especially like Latest in Paleo (despite the fact that I’m not eating
anything near a Paleo diet) and the Pipeline (check out the interview
with Philip Elmer-DeWitt). Looking
through the list of shows, I can only believe that Dan Benjamin has to
be the most productive person on the face of the earth.
I’m currently also listening to All About Android, This American Life and some UC-Berkeley CS lectures. Any
other great podcasts I’m missing?
I found this great github project. It’s just a list of .gitignore files for various languages and
platforms, but it’s nice to have them all in one place. The
.gitignore
file is, like it sounds, a list of files or directories
that you don’t want to be included in version control. For Android,
for example, the bin/
and gen/
directories are generated each time
you compile, so you don’t want to include that. Especially, as I learned,
because it will give you errors when you run a project created on one
computer, on a different computer. The Android .gitignore
from
github unfortunately didn’t have bin/
or gen/
(or
local.properties
) in there, so I put them in and was about to send
them a pull request, when I found someone else had made the same
changes a few days ago already. Which makes me feel better that I was
on the right path. Go Open Source!
If you see this error:
E/AndroidRuntime( 457): android.content.res.Resources$NotFoundException:
File Yamba1 from xml type layout resource ID #0x7f060000
… try deleting the bin/
and gen/
directories in your app. It should
clear the error.
Reference: http://code.google.com/p/android/issues/detail?id=2726#c6
Here are some (unorganized) thoughts about my experience at the
Society of Hospital Medicine (SHM) 2011 conference in Dallas, TX.
Opening Plenary
The initial presentation dissected the SHM Annual Compensation survey,
discussing regional variations in pay and work effort over time. I
understand the importance of that stuff, but ever since I got my first
$638.36 paycheck as an intern, money hasn’t been an issue for me.
The second talk was by Bob Kocher, an Obama
insider during the recent healthcare reformd. Gerry would have loved
this one. He briefly described how a bill becomes a law… it
apparently doesn’t follow the Schoolhouse Rock model anymore. At one
point, reform looked dead, when the Catholic Nuns came out in favor of
the legislation allowing multiple congress members to change their
vote to “Yes”. As Kocher put it (paraphrasing), “When the Nuns broke
with the Bishops, healthcare reform could move forward.” Doesn’t that
seem like a statement that should be in a history book about medieval
times, rather than a statement about 2010 United States politics?
Maybe it’s just me…
Neurologic emergencies
The Neurologic emergencies talk was entertaining, though maybe more
useful to an intensivist. David Likosky is hilarious in a geeky kind
of way. A few things I learned:
Always maintain a good differential diagnosis and don’t jump to a
conclusion too quickly. He described a case of an alcoholic who
presented in coma and had dynamic pupils making a brainstem stroke the
most likely diagnosis. A lot of time was spent to rule that out, and
then his labs came back with a sugar of 13, indicating that the
diagnosis of hypoglycemia was missed. He described some of the reasons
that happened and I can see them happening to me. Never get fixated on
a diagnosis, especially before you’ve made the proper initial
evaluaation. A fingerstick glucose should always be done in a coma
workup.
A few points on status epilepticus (SE)
- Convulsive SE is a seizure that lasts more than 5 minutes, and is a medical
emergency.
- Lorazepam is probably better than Diazepam and don’t be
afraid to use high doses (Start at 4 IV). We commonly underdose and
underdosing hurts.
- Nonconvulsive SE is considered as a medical urgency. A lot of
patients have SE on EEG after convulsions have stopped and many have
persistent subclinical seizures after SE is controlled. So, repeat the
EEG, and consider transfer to a center that can do continuous EEG monitoring.
- Absence seizures is really a diagnosis of children. (Not really
about SE, but interesting)
Things to make you think that a CVA may be posterior circulation: Loss
of consciousness, pupillary abnormalities, superhigh BP. Allow it to
stay superhigh and keep the patient flat. Because posterior
circulation strokes have such bad outcomes, it’s OK to intervene after
the normal time window if there doesn’t seem to be any other hope.
Dermatology images (Paul Aronowitz)
When approaching a rash, ask 3 questions: Did the patient cause this
rash? Did we do that to the patient? (Ask this twice). Is this rash a
manifestation of some other disease? We often jump to the third
question, but should consider the first two.
The snake bite risk factors are pretty interesting:
- Male
- Age 17-27
- Deliberate attempt to handle, harm or kill snake
- Summer months
- Alcohol intoxication
- Tattoos
DRESS (Drug reaction with eosinophilia and systemic symptoms) usually
occurs 2-6 weeks after the drug is started, but occurs quicker after
rechallenge with the drug.
Reactive arthritis can be seen after Clostridium difficile infections.
20% of cases of Neisseria meningitidis do not have meningitis.
Poster presentations
The poster presentations are always fun to read, though if I see one
more poster about the readmission problem, I will vomit.
Research Abstract Awards
The winning research abstracts were very interesting.
-
UCSF described changes that they made to meet new ACGME requirements
while decreasing costs and improving certain quality measures.
-
Johns Hopkins hospitalists modified their CPOE system to show the
costs of specific lab tests, hoping to change provider behavior. They
were able to show that providers ordered less tests when they saw the
cost. Duh, you say, but there is so little cost information available
to providers, so this is innovative if only for that reason.
-
Hospitalists (in Colorado, I think?) used the Toyota Production
System to model problems with current intern work schedules. They then
reworked the schedule to minimize waste of resident resources, while
improving continuity and resident satisfaction. They were able to
basically eliminate moonlighter and jeopardy use. I didn’t understand
the schedule because it was presented quickly, but I like the idea of
taking a nonmedical thought approach and applying it to medicine. I
also like that they optimized for continuity of care, so that after
the intervention there was a huge increase in the amount of patients
that were seen only by 1 intern during their stay. Very interesting!
My attention faded during the award presentations and SHM motivational
speeches, but Joseph Li, the incoming SHM president, did come clean
and acknowledge that he was born outside the U.S., despite his lack of
an accent. The birthers were right!
Geographic rounding
Emory Hospitalists then presented a talk which was titled ‘Utilizing
Technology to Improve Clinical and Operational Performance of
Hospitalists’ but it should really have been titled “Geographic
Bedside Rounds: Just Do It!”. They did mention the IT improvements
they’ve made to support geographic rounding, but the value of the talk
was in describing how they implemented geographic rounding and how it
has been received by the involved parties. Moving to geographic
rounding helps providers the least. It’s basically an addition to our
workload. On the other hand, patients, nurses, and social workers get
a lot of benefit and obviously, the patients are the most important
factor here. We will have to see the patient more than once and our
workflow will have to change, but it seems that the benefits outweigh
the extra costs to the individual provider. Paraphrased, “Nurses and
social workers would riot if we stopped this system, but even
hospitalists wouldn’t want to go back to the old way, if put to a
referendum.” Something that only came out in the post-talk questions
was how this has improved overall teamwork. They used to have a
complicated system about how new admissions were assigned, taking into
account census numbers, discharge numbers, and other factors. Now,
with the new system, there are days that one hospitalist will have
completely unequal numbers or new patients than another hospitalist,
but it is understood that things will even out over time. That has
encouraged hospitalists to stop focusing on numbers and instead to
focus on making things run better, so hospitalists who were previously
“anti-teamwork” are now offering to help out when they’re done with
their work. Anecdotal, but I like stories like that.
They also mentioned that they created a video dramatization of their
bedside rounds. If I can find it, I will link to it.
Updates in Hospital Medicine
- Oral prednisone 60 mg daily as good as 600 mg IV for COPD
exacerbation (Presented at DRH Journal club)
- OK to extend peripheral IVs rather than change routinely (Emailed to
me by DRH Hospitalist)
- Getting appts for COPD exacerbation pts within 30 days may decrease
rehospitalization (duh!)
- Benefit for tPA in stroke up to 4.5 hours, but earlier is better
(DRH Journal club)
- Gurgling sounds predict pneumonia and ICU transfer (duh)
- Routine ID consultation in Staph aureus bacteremia significantly
improves mortality (HR 0.44) (NEW TO ME)
- Coagulopathy in liver disease doesn’t protect against VTE (duh)
- Metformin does not cause lactic acidosis (old news, but nice to be
data-supported now)
- Enteral nutrition better than TPN in pancreatitis (DRH email/conversations)
- In ICU palliative care situations, only 47% of family members based
their survival estimates on MD’s prognosis advice.
I skipped the ICU stuff. Only one of these updates was new to me
(listed as NEW in the list above). I attribute that to my colleagues
at Durham Regional who have been sharing the knowledge that they’ve
been collecting from various meetings and readings this year.
Careers in Academic Medicine
This was a workshop on how to pursue your ideal life in academic
medicine. I loved the energy and enthusiasm of the instructors. This
probably would’ve benefited from being a longer course with fewer,
more involved participants. The basic premise was to document what
exactly you are doing now, what you’re getting paid to do, and what
you enjoy doing. Reconcile the differences in those 3 lists and try to
identify how to make them match.
No wireless
This would have been posted a lot earlier if I could ever get on the
SHM wireless network at the Gaylord Convention Center. “Please
wait. You will be redirected to the authentication page in 5 seconds.”
You lie!
I recently finished reading Learning Android. I have a Droid X, Mala has a Droid
Eris, and I just bought a Viewsonic g-tablet, so I have plenty of
Android devices. While I still have trouble with the idea of typing on
a touchscreen, I know that we are moving towards a future where mobile
devices are our primary computers. This is not earth
shattering. Philip Greenspun mentioned it 5 years ago. Android
will be one of the more prominent mobile OS’s
along with iOS, so I want to learn how to program it.
I came into this book having browsed some of the example code on the
developer.android.com website. It is
great for an overview, and there is a lot of in-depth information on
APIs, etc., but I still didn’t quite understand how to go about
starting an app.
In March, O’Reilly had a sale on e-books, so I bought Learning Android. It is a reasonable introduction to
Android programming. It’s beings gently, explaining the history of
Android and providing a general overview of how the Android stack
works. It’s explains how to use the Eclipse IDE, but as a fervent
emacs fan, I was easily able to adjust to using emacs (with
android-mode.el) for all of
my development. There were typos and minor errors, but fortunately
O’Reilly has an errata page
where people can post fixes and suggestions. Keep that page open while
you’re reading this book. There were a couple areas where the ordering
of the discussion could have been improved. If I didn’t have that
errata page at hand, I would have been completely
frustrated. Especially at the beginning, the instructions were not
detailed enough. For example, we are instructed on how to create a
program and how to start the emulator, but there is no clear
explanation on how to run the program on the emulator. A little more
step-by-step hand-holding would have been nice.
In case you ignored my advice to check out that errata page, at least
make sure that you have the updated version of the jTwitter library,
or else you’ll never get the sample programs to run without errors.
I haven’t used Java in a while, so I forgot how verbose Java
is. Writing Tcl, Ruby and Python has spoiled me. It takes so long to
do something simple in Java. I know that this is usually offset by
code generators and IDEs, but it still just seems so clunky to read
and write. There is a scripting language project for Android (SL4A). I haven’t tried
it, but it involves bundling the scripting environment with your app
if you want to distribute it to others. I’m also not certain that it
provides access to all of the functionality provided in the Java SDK.
Someday, I hope that a scripting language SDK is provided. It seems
like a natural progression.
All in all, I think Learning Android is perfect for someone who wants
to get started in Android programming. It gives a nice gentle
introduction to all of the basics of how the platform works. Most of
this information is available on the web in various places, but it’s
nice to have it all in one place, and I still think there’s value to
having one book that takes you from step zero to a working app. I
think I’ll now be able to use the online docs to get me moving. I was
often frustrated by the typos, minor technical errors and
inconsistencies, but I suspect the book was under a lot of time
pressure, given how hot mobile programming is these days. It just felt
like it was written on a rushed deadline. It’s also not the most
entertaining book in the world, which is OK for a technical book. I’d
always rather have a boring technical book, than an attempt at an
entertaining one.
I ran the 15K Philosopher’s Way Trail Run today. It’s on the eastern end
of Carolina North Forest. I’ve been running a lot on the western end
of these trails so I had never seen any of these trails before. The
weather was perfect - sunny and mid 50’s - and the trails were in good
shape. I only got a little muddy. The race was very well organized for
such a small race. The only minor annoyance was the beginning of the
race where a couple hundred runners turned from a 20 foot wide course
onto a single track bike course. Everyone came to a halt and we all
walked for about a quarter mile. I didn’t really start running
smoothly until about a mile in and the next 3 miles were spent passing
and waiting, passing and waiting. That in itself is ok … it’s part
of trail running. I would’ve just extended the time that we were on
the wide track to give time for people to string out a bit more. Like I
said … minor annoyance.
Once we got moving, I had a blast. I just love running in the woods. I
felt unstoppable until about mile 7 and then I lost my gumption and my
thighs started to complain. I held on to the people in front of me as
much as I could, but one person did pass me at the end, the only
person to pass me in the last 5 miles. I think I saw 1:33 as I
finished, but my GPS time was 1:29:09. I think it stops the clock
whenever it thinks I have stopped and it got really confused on the
trails. It recorded my final distance as 6.0 miles which is 3.3 miles
too short. I had suspicions that my earlier trail runs were
underestimated, but never thought it was this inaccurate. My B goal was 1:30 so
I was close and I definitely hit my C goal.
I’ll definitely be doing this run again next year, if I’m free. I’m
currently posting my runs at dailymile (a
cool site built by two UW grads),
so follow me there!
There’s something about photography that seems to attract
programmers. So many of the really good programmers that I know are
also into photography. I, on the other hand, am just happy if my
latest photo of the kids doesn’t include massive red eye. I’m always
happy when a shot looks nice, but I know I’m not interested enough to
be an exceptional photographer. I’ve never wanted a fancy SLR camera
because I know I’d leave it on the shelf collecting dust. I’d rather
have a camera that I will actually carry with me.
On that note, I’m really happy with the Canon Powershot S95 that Mala bought me. It’s even tinier than
my previous pocket cameras but it takes really good photos. It’s
no SLR, but I’m pretty impressed with the quality so far. I learned
from David Pogue’s Digital Photography: The Missing Manual that image sensor size is, by far, the
most important criteria by which to compare cameras and the S95’s
image sensor is huge. It’s only 10 megapixels, but that is mostly a
meaningless statistics. Ignore megapixels and pay attention to the
image sensor size. I also love that it has no noticeable shutter
lag. I’ve been chasing running kids around the past couple days and
have yet to miss a shot.
If you’re not a photography buff, David Pogue’s Missing Manual has a lot of straightforward, simple
advice that will make your pics better.
Here’s a few photos from this weekend:
Tim Bray posted the links that his browser displays when
he types each letter of the alphabet. Here’s mine:
[A]dSense. I spend too much time watching the
zero’s pile up.
[B]orkware. Always good for a
quickie. Wait… that didn’t sound right.
[C]ite-U-Like. I’ve started to use this site
to keep track of journal articles that I read.
[D]ocs (Google). I store my Habits
spreadsheet, my weight spreadsheet, our address book spreadsheet
(because Google contacts aren’t shareable) and other random documents.
[E]vernote. I’ve been trying to use this more
to keep a central repository of notes, but it hasn’t stuck yet.
[F]acebook. I don’t know why this is there. I
never use facebook.
[G]queues. I’m surprised that Google lost this
one. I’m using Gqueues to keep track of my todos. It’s pretty nice. My
main complaint is that it’s a little slow and there’s no Android client.
[H]ttp://facebook.com. Oh, how
embarrassing. OK, my name is Vinod Kurup and I’m a facebook addict.
[I]nstapaper. I store longer articles here
for later reading. I use the Instafetch client on Android to read them.
[J]ournal Watch. Phew! At least one site relevant
to my day job!
[K]urup.org. The most amazing site on the internet.
[L]loogg. tail -f access.log
for the web
[M]yfitnesspal. We’re using this to track
our diet and exercise. We used to use Fitday, but this
is so much easier and there’s a social component that is
motivating. It’s amazing how comprehensive their food database is.
[N]ewegg.com. Mostly for printer cartridges, but
occasionally for toys.
Duke [O]utlook. My new work webmail. Outlook
2010 == HIT’s idea of modern.
[P]icasaweb. Pictures of the cutest
kids in the world.
[Q]. This space for rent.
[R]uby-doc.org. I’m trying to learn ruby (the
right way)
[S]ports.yahoo.com. My University of
Wisconsin, Green Bay Packer and Milwaukee Bucks/Brewers addiction is
slow to die.
[T]witter. Yup, I still use twitter.com.
[U]. bUeller… bUeller…
[V]ictory Village. Kid’s daycare. Lots
of snow this winter meant lots of checks to see if daycare was open.
Old Duke [W]ebmail. Lotus Notes,
then Outlook 2007, now defunct.
[X]KCD. The best comic strip in the world.
[Y]outube. Videos of the cutest kids in the
world. Plus I think there are some other videos there…
[Z]. This space left intentionally blank.
And had to add (because it’s so heavily used):
[1]27.0.0.1:4000. My local Jekyll server.
Written a few weeks ago
I came home late today, so Anika and Kavi had already eaten dinner and
taken their baths. As I drove down the driveway, I could see Kavi’s
excited little head poking over the upstairs windowsill. I parked the
car and opened the door into the house. I was immediately met a voice
screaming, “Daddy, Daddy!” with pure joy in his voice. He ran down the
stairs and gave me a huge hug. I just love that. There is nothing
better than coming home to such a loving family. It makes all the
stress and BS at work melt away.
Then I followed him upstairs and Anika ran over and gave me a big hug
and then started “Dancing on the diaper pad!” (Will have to upload a
video of that someday). I watched for a few moments and then got up to
go change my clothes. She started to get upset, so I held her hand and
walked her down the hallway with me. That’s another thing I
love. Seeing this sweet little girl with her arm extended as high as
she can possibly reach to hold my hand, walking with me, like I’m the
most important person in the world, just makes my heart melt. I don’t
know what I’ve done to deserve such love and admiration. I just hope
that I can live up to their expectations.
Kavi had a scary episode on Superbowl Sunday. We were just getting
ready to go next door for the Superbowl party. I was upstairs with
Anika and she had just been getting upset about how she wanted to go
downstairs. Kavi and Mommy were downstairs, but they were coming
upstairs, so I wanted Anika to stay up here, rather than go down and
then come up again. I picked her up and held her in my arms to keep
her happy. I heard Kavi start coming up the stairs, and normally I
would have opened the baby-gate for him, but this time I didn’t want
Anika to see me opening the gate, because I thought she’d start
getting upset again, wanting to go downstairs. Instead, I just stood a
few feet away from the gate, telling Anika, “See, Kavi’s coming
upstairs.” He’s opened the gate hundreds of times and has never had
any trouble doing it. This time, however, he opened the gate, lost his
balance and the gate started swinging open over the stairs. He held on
to the gate and swung with it. He was hanging on tightly and I could
see his feet dangling, trying to find a foothold on a step, but since
the gate had swung open over the stairs, he was too high to reach the
stairs. I vividly saw the fear in his huge eyes and ran to the gate,
but by the time I got there, the gate had given way and he was
tumbling down the stairs.
Time stopped.
He screamed with the most terrified scream that I’ve ever heard. He
initially landed on his feet in the middle of the staircase, but the
momentum made him fly down the stairs and his head banged against the
far wall. The gate followed close behind and landed on top of
him. Anika started screaming in my arms. She instinctively knew that
something bad had happened. I initially bent over to put her down at
the top of the stairs and then quickly reconsidered, knowing that she
would want to come down with me and might fall in the process. I
picked her back up and headed down the stairs as Mala raced up from
the kitchen. I gave Anika to Mala as I grabbed Kavi and looked him
over. He had a tiny scrape on his head, but no bleeding. He seemed to
be complaining most about pain in his left arm and shoulder. It
reassured me a bit, because I was worried about his head, but then I
got worried that maybe he had broken his arm or something. We held him
for a while and put ice on his head and shoulders. Anika was tearful
watching all of this but calmed down quickly. Then I went upstairs to
fix the gate.
Within a few minutes he was bouncing around without any sign that he
had fallen. I was so relieved, but I still have visions of his eyes
being full of fear as he was hanging from that swinging gate. I know
how lucky I am and how lucky we have been, in general. I also know
that there will be other scary moments in the future - it’s a part of
life. Weathering this admittedly minor mishap took all the strength
and fortitude that I could muster. How do people do it? How do people
withstand bad things happening to their kids? I just don’t know how
people can take so much potential pain.