Today’s thrilling Python romp: Pet Picking

So I’ve been running through the Python exercises on CodingBat for the last several days, and they’re fly as hell. This amazing site is proof that you don’t need a lot of flashy fancy gifs and pretty colors to make a sweet learning site. (Looking at you, Codecademy.)

Anyway, I started to run into warmup exercises (!!) that I couldn’t crack. Some of these were legit hard for me, but some of them were simply outside of my current range, so to speak. So I added a nice -1 to that len(experience) and looped back to my trusty NoStarch Python Crash Course to figure out what I’d missed.

The first thing I made was a nice list of animals that would make good pets, as per an exercise on page 60 in chapter 4.

|pets = [‘dog’,’cat’,’rabbit’,’snail’,’tortoise’,’mongolian death |worm’,’bigfoot’,’plesiosaur’,’mothman’,’jersey devil’]

Then I printed them all with a for loop. Still no biggie, still nothing I don’t know how to do. This was the extent of the exercise as the book outlined it.

|pets = [‘dog’, ‘cat’, ‘rabbit’, ‘snail’, ‘tortoise’, ‘mongolian death worm’, ‘bigfoot’, |’plesiosaur’, ‘mothman’, ‘jersey devil’]
|     for pet in pets:
|          print(‘A ‘+ pet + ‘ would make a great pet!’)
|     print(‘\nAll of these would make great pets!’)

The output was not unexpected.

|A dog would make a great pet!
|A cat would make a great pet!
|A rabbit would make a great pet!
|A snail would make a great pet!
|A tortoise would make a great pet!
|A mongolian death worm would make a great pet!
|A bigfoot would make a great pet!
|A plesiosaur would make a great pet!
|A mothman would make a great pet!
|A jersey devil would make a great pet!

|All of these would make great pets!

But then I thought, what if my user wanted to check and see if their preferred pet was on the list? I need them to understand that a bearded dragon does not count as a good companion animal, but that they ought to consider a plesiosaur.

My first step was to add another variable and make it an input. Here my sins began, because the book isn’t even through for loops yet and I’m not supposed to know about input. (By the way, I should have mentioned before that I’m working in Python 3.)

|want=input(‘What kind of pet would you want to get? ‘)

Yay, I have a new variable! Now I need to run through the list and check to see if the user’s pet request is an option.

Right away I ran into a problem because I can never for the life of me remember that you need two equals (==) to define a loop. After all those CodingBat exercises where I forgot this rule every single relevant time, you’d think I’d have broken this godawful habit. Someday.

So I added me an if inside my for, correct equals and all.

|pets = [‘dog’,’cat’,’rabbit’,’snail’,’tortoise’,’mongolian death |worm’,’bigfoot’,’plesiosaur’,’mothman’,’jersey devil’]
|want=input(‘What kind of pet would you want to get? ‘)
|     for pet in pets:
|          if want == pets[pet]:
|          print(‘A ‘+ pet + ‘ would make a great pet!’)
|#print(‘\nAll of these would make great pets!’)

I kept the last statement because apparently I hoard code like I hoard everything else in my life: for no reason.

Problems abounded! first of all, the search stopped at the first index. Second, Python threw a tantrum because strings aren’t integers and integers aren’t strings, and list item indices are DEFINITELY not strings. (Try counting to “banana.”) Finally, there was no way to deal with requests for pets that weren’t on the approved list. If my user can’t settle for a bigfoot, my user isn’t isn’t getting an animal, period!

Here’s what I figured out.

|pets = [‘dog’, ‘cat’, ‘rabbit’, ‘snail’, ‘tortoise’, ‘mongolian death worm’, ‘bigfoot’, |’plesiosaur’, ‘mothman’, ‘jersey devil’]
|want=input(‘What kind of pet would you want to get? ‘)
|     for pet in range(len(pets)):
|        if want == pets[x]:
|           print(‘A ‘+ want + ‘ would make a great pet!’)
|           break
|        if want != pets[x]:
|            x=x+1
|        if x == len(pets):
|            print(‘A ‘+ want + ‘ would just eat your homework.’)

I admit that I was continuing to cheat here, since I’m not supposed to know about break yet. However, I needed it and this was an urgent pressing question that had to be answered one way or the other, plus I didn’t want to sound like a manic robot screaming “A CAT WOULD MAKE A GREAT PET!” over and over again. There’s probably another, better way to do it. When I’m a more capable coder I’ll look back at this post and have a hearty laugh before deleting it in embarrassment.

For now, the first if looks to see if the input matches the index we’re on. If it doesn’t, it triggers the next if, which just pushes the index count variable to the next integer and keeps us marching onward to the end of the list. Finally, when x is as long as the length of the list, (which is to say we’re past the last actual list item because indicies are magic -1,) then Python can let the user down easy.


|What kind of pet would you want to get? a cat
|A a cat would just eat your homework.

Curses. Any deviation from “cat” or “dog” or “plesiosaur” as input resulted in pet denial and sometimes ridiculous output, even if it were a logical answer that otherwise fit the parameters of the list’s intent. This would not do!

The easiest step was to make sure that the user didn’t get denied based on capitalization. I .lowered() that boom and then applied a nice .strip(‘a ‘).

|pets = [‘dog’, ‘cat’, ‘rabbit’, ‘snail’, ‘tortoise’, ‘mongolian death worm’, ‘bigfoot’, |’plesiosaur’, ‘mothman’, ‘jersey devil’]
|want=input(‘What kind of pet would you want to get? ‘)
|if want[0:2] == ‘a ‘:
|    want=want.strip(‘a ‘)
|for pet in range(len(pets)):
|    if want == pets[x]:
|        print(‘A ‘+ want + ‘ would make a great pet!’)
|        break
|    if want != pets[x]:
|        x=x+1
|    if x == len(pets):
|        print(‘A ‘+ want + ‘ would just eat your homework.’)


|What kind of pet would you want to get? A Mothman
|A mothman would make a great pet!

This, of course, is fine. However, it would be nice to allow users to define their own lists of appropriate pets so that parents can be superusers who make sure that their kids, as regular users, are ordering proper domestic skinks and bonobos and golden hinds and whatnot. I could do this by simply asking the superuser for input and appending each input item to the pets list for the users, but I think I’d rather avoid having the user type out the various animals they want their kids to own. Instead, I want them to be able to enter an admin mode with a password and select pet options from a menu. That’s probably going to be my next modification. After that, I want to…

  • Create a returning user function for the kid
  • Allow the parent to modify a responsibility index based on how well they feel the kid has been taking care of the pet
  • Use calendar functions to determine how much keeping the pet has cost since last login
  • Use these factors to create a dashboard for the parent so that they can figure out if the kid should be allowed to get another animal.

It would be nice to make a fully fleshed-out pet keeping game out of this, but right now I have absolutely no idea how to make graphics. Maybe I could create a Rogue-style adventure. No game has really done it for me since Nethack and come to think of it, pet ownership is a significant part of that too. Maybe I’ll just code my own Nethack, but make it all about the pets.

Pokemon. I just came up with Rogue-style Pokemon. Fuck me. I’m going to go code some more.

Eventually I’ll get back to the book.

Python Python hiss hiss

One thing that I like to do when I’m feeling sick is practice Python. I’m what you might call a promising beginner coder. It’s something that I want to get good at – really good, if possible. I enjoy it almost as much as I enjoy writing. Unlike writing, coding might actually pay someday – not that writing has done me bad, but let’s face it, its not going to cover my monthly barrel of bats, nor my bespoke acne cream, nor my shipment of Pakistani mangoes.

During the Bad Year, I resolved to work until my daily financial goals were met every day. I calculated what I made at my part-time library job(s) minus gas and daily extravagances like food. Whatever else needed to be spent that day, whether that was a portion of the rent or a medical bill, was what I had to make before I collapsed from exhaustion. I had fractions upon fractions going – I needed to make approximately $50 every day just to cover rent – but no matter how I cut it, I was putting in 16-hour days, working literally from the moment I opened my eyes until I passed out. I’d go to sleep with my computer on my lap, wake up, and start typing again right away. I was a writing fiend, and as we all know, fiends live in Hell.

Previously, professional writing had been a fun jaunt on the wild side, a little wooliness for my otherwise orderly career progression. I’d gotten there slowly after writing school destroyed my initial desire to write fiction – it wasn’t until years later that I published stories again. And I’ll always have listicles to thank for getting me there! Thanks, listicles!

But once you monetize something, it becomes a millstone. It doesn’t matter how much you like it. Suddenly it’s not who you are, but what you do. Who you are is about identity, love, joy, and probably chakras or something. What you do is about money. It’s nice to think that you can mix those two brews and end up doing something you love for money and get paid for living your best life, but in my experience, the money wins just because it makes more demands.

God I hate money. I don’t hate achievement, I don’t hate fame or recognition or success or work, but I hate that money is how we measure personal value. Specifically, I hate that money is also what we need to spend to survive – the main societal measure of our individual success and self-worth going on the budget sheet to cover rice and beans for this month. Do I have an alternative? Nope! I just think that the current system is harmful.

I have digressed. Back story: I’ve been sick for like four days, maybe longer. No, it’s not Covid. Yes, I am loopy and distracted. This is why now is the perfect time to practice Python. Also to stay up late and finish a blog post.

I have a love-hate relationship with coding. I’m naturally pretty good at it, but when I take a class, I seem to draw a jerky professor who believes, at best, that a woman trying to code is just so ineffectual and pointless that it’s cute. I am not cute and despite my best efforts to be sweet and nice and gentle I am naturally very direct. It is also hard to brush me off on account of the fact that I am unfortunately me, so any given professorial-stand-in-stereotype has tended to try and break down my ego instead. This strategy is actually pretty effective, and I am now plagued by self-doubt and the thought of taking a coding boot camp or another coding class ever makes me wince. I know that not all professors or whatever. I have had some evil luck and have heard reports that much of the coding world is just like this. At my age I don’t have time for nonsense. Sue me if you don’t like it.

So because my relationship with coding is a tetch uncomfortable, coding is an ideal candidate for future money-maker. I can learn it myself (I am in fact making good progress) and scootch into the profession by demoing my skills. I can sacrifice it on the alter of the money gods without too much regret and even with some relief. At the same time, it can be done online on a freelance basis for a decent return. (Eventually. I’ll need to glom onto a bunch of freebie open source projects first to prove that I know my stuff.)

The fact is that times are strange. I want to believe that my current job, which I like, is stable, but who knows? Libraries are suffering financially along with everyone else, and if enough economic dominoes were to fall, my safety would by no means be guaranteed. In a worst-case scenario, I wouldn’t feel confident using writing as a parachute again – a year ago I still harbored fantasies of going full-time as a writer, but we have a mortgage now and everyone who can work online will – and the jobs are likely about to go poof. My resume already looks funky enough due to the Bad Year that I suspect I’ll always have some trouble job searching in libraries. I need a new backup skill, and it’s got to be solid.

So cry havoc and hunch over a keyboard! Time to set aside a little coding practice every day after work, to struggle with modules and indices, and to remember that an array cannot bite me harder than I can bite it. And if worst comes to worst, there’s still the bookstore/vegan deli concept. Perhaps grammaries and seitan will save me in the end after all.

Diary of a Librarian: #NewYearGoals

2020! Woooo!

The concept of decades and years and minutes and hours and stuff like that are all human and based on Earth-specific metrics, like our relative gravity and the speed of our planet’s rotation. Making New Year’s resolutions is as arbitrary as marking this particular day as the first of the year. But when you get right down to it, a lot of human aspirations are arbitrary. Take money. Once you have enough of it to satisfy your personal standard of living, you’re not really going to improve your life by adding more. In fact, you’re probably going to make yourself a bit more miserable because it’s not money that you actually like, but having a challenging goal.

Nevertheless, even the zen-est librarian jumps and hollers at a job that offers a raise. I’ve done it myself! In fact, this attitude led directly to the single biggest kerplunk of my career. I believe that I was too focused on achieving a goal – making more money – and not focused enough upon getting a job where I actually enjoyed the day-to-day.

At my current position, which is not a kerplunk, I experience a rush of happiness when I complete a task, followed by a steep dip into dissatisfaction when I realize that there’s nothing left to do. This spike and dip pattern zeroes itself out. I might successfully help a patron retrieve a password, but then there are no more patrons for a long time and I risk becoming bored. (Boredom! My eternal nemesis!) However, having a steady project, like running a driver update schedule on all of our staff and public computers, keeps me busy and gives me a running sense of accomplishment. Occasional setbacks are inevitable and can be frustrating, but the process is, on the whole, more satisfying than reaching the conclusion.

Musician, Person, Guitar, Song, Rock, Jazz, Concert


I’ve noticed this before while hiking, reading, writing, whitewater kayaking, fighting, dieting, roller derby bouting, and gardening. Obviously we need goals for the purpose of motivation and actual productivity; there’s not much point in tenderly caring for a tomato crop all year if you’re not going to get some nice juicy beefsteaks out of it. But is it possible that this is one of those little evolutionary tricks that nature has played upon us humans for our own good, like our desire to consume mass amounts of sugar and sit on our asses all day? Is it possible that this is a trait that is no longer as useful as it would have been when we were, say, running down antelopes over the course of several days?

That’s why, for this fun but arbitrary annual counter, I’m going to make an arbitrary adjustment to new Year’s tradition. Instead of resolutions, I’m going to make adjustments to my life and process that I will maintain going forward. Personally, this will involve a whole lot more walking and biking and a whole lot less buying new stuff. Librarianwise, it’s all about the tech with a big dollop of self-care.

Always Be Studying

STUDY FOREVER! My role at Nevins Library has recently involved an uptick in downtime, and that’s not great for me. I like to be doing something every minute of every day. Otherwise, I get bored! (BOREDOM! My eternal nemesis!) Luckily, the library’s new computer use policy allows staff to participate in educational activities when not otherwise engaged. With the shelves still gone, we have relatively few patrons visiting us on the reference floor, and that means tons of study time.

I intend to work through the Meyers Comptia A+ Certification Study Guide until I’m ready to take the test, then clamp right down on Python and maybe Swift. If I could eventually get a custom iPhone app for library computer maintenance tracking out of this, I’ll be exceedingly happy.

Comptia A+ Certification All-In-One Exam Guide, Tenth Edition (Exams 220-1001 & 220-1002)

Truth in advertising!


I’m making some adjustments to how I handle low-grade IT problems, which are the only grade of problems I’m currently qualified to solve. I’m de facto IT at the Nevins Library, which was a major impetus of my desire to learn more about computers before I realized that I’m really quite talented at computers.

I recognize that I’m not a “real” IT person yet – the library contracts with someone who has a complete CS education and commensurate experience – but since I’m the one staff members call to unjam copiers in situ, I want to keep track like the big kids. I’ve already started a receipt and ticketing system based on our shared staff server. It’s very, very simple, because it’s literally just a Word and Excel document pair that I fill in by hand after I deal with a tech problem.

ink bottle on desk

Ticketing System v1.0

Someday I’ll learn to automate it, but for now, it seems to be working OK. My goal this year is to make writing a ticket as natural a process as responding to a tech problem in the first place.

A Little Insulation

I come down very hard on myself. This is a lifelong pattern and it disturbs the people around me. I don’t enjoy it, either. If I knew why I do it, I’d stop! It comes across as unfair and uncomfortable at best, which I know because good friends have leveled with me. I’ve also come to believe that this bad habit may strike people who don’t know me well as manipulative. This alone makes me want to modify this behavior because I am, in fact, a painfully earnest person.

I believe that I’ve improved upon the self-hatin’ since I first realized that it was such a serious issue, but I have a long way to go. (My sense of humor in particular goes a little too far past self-deprecating.) I think that the solution is to treat this tendency like an anger problem: when I have feelings, I’ll step away for a few minutes until I feel better or get distracted.

Here’s to 2020, folks. May your libraries thrive and your patrons throw away their own food.

Featured image from Pineapple Supply Co. on Unsplash!

Diary of a Librarian: The Skills We REALLY Need

Hello, friends! It’s nearly Thanksgiving, so I’ll keep this short, sweet, and to the point. We librarians need to edumacate ourselves.

I’m not talking about increasing our focus on reference or becoming better at beeping the books. That’s the old way of thinking about specialties. These days we need to develop new skills, and that means continuing ed. Let’s pay librarians’ tuition and send them to school to develop some useful new skills! These skills don’t have to be specific to each staff member. Someone could develop two specialties or even triple up – this, after all, is libraries.

Here’s what I think we need the most right now.

Education Librarian

We’re as much teachers these days as anything else. Patrons want to learn how to download apps and use Excel. The problem is that, aside from school librarians, we generally don’t know how to teach.

The education librarian would coordinate learning events in the library and, when necessary, instruct other librarians on how to be good teachers. When someone declares that there should be a Coursera run in the library, it’ll be the education librarian who figures that out.

Internal Communication Librarian

Librarians tend to be free spirits. Individualists. A herd of cats, you could say. And that’s great! Except it also isn’t. It also means that we trip all over each other in a group. Enter the internal communication librarian!

This person takes business classes and then manages meetings, makes sure that everybody knows what’s going on, and generally makes sure Person X talks to Person Y about Person Z’s project. Maybe they’d run an internal staff blog detailing the library’s news.

Outreach Librarian

A lot of places already have this person – my place does. But too many do not! Some librarians need to take marketing classes and become library bloggers, social media experts, and advertising mavens.

IT Librarian

That’s me, guys! The IT librarian might come in with some IT background, but they could also get training as they work for the library. They don’t have to be hackers or whatever, they just need to know something about a motherboard and be ready to talk the lingo to tech support.

The IT librarian could double as the cybersecurity librarian. They’d track the institutional passwords and explain to everyone why they really do need to change every 60 days.

Elder Librarian

Seniors have particular needs. Sometimes, these involve mobility and vision accommodations that most of us don’t think of before they happen to us. At the same time, they’re big-time library patrons. Why not specialize a librarian to them the way we do with teens?

Graphic Designer Librarian

Libraries aren’t not going to need to do outreach in the future. That outreach isn’t not going to need to look good. Why not train someone to be the library’s professional artist?

This shouldn’t require an art degree, just a willingness to learn. The graphic designer would make clipart, zshuzsh up promotional materials, and keep library materials on-brand and looking neat.


We need librarians whose job priority is to watch for trends in the profession and in the wider world, and then test them out to see if they could be useful in a library context.

They should go to every conference, collect every business card, and build a weekly situational report for their institution that includes new social factors (“OK Boomer,”) new tech developments (foldable smartphone,) and the results of their own R&D. For example, maybe this is the person to test NFC stickers in the library.

Special Needs Librarian

There are a lot of possible applications for this kind of expertise. Are libraries overwhelming environments for autistic people? I have no idea! I’m not autistic and have no training in that area. Are children’s books available enough to adults who read at a low Lexile? Once again, it’s a need that exists and we might be able to meet it if we train someone to be an expert on the topic.

Linguist Librarian

This intrepid person’s job will be to learn languages. They should come into the library with at least two, but over the years, they will learn more. The library will send them to school to learn Spanish, French, Arabic, Mandarin, and anything else that could possibly come in useful. It won’t be their entire job, per se, but it’ll be a big chunk.


Now I want to hear your ideas. Comment with the librarian specialization you think we need right now! If you think librarians already have enough going on in their lives without more stupid school, comment about that too.

Happy travel day, library friends!

Special thanks to this awesome dude for our featured image!——-> Dollar Gill

Diary Of A Librarian Addendum: When Hardware Strikes and Apology to SupportAssist

If you’re a reader of mine, then you may remember this post about how much I hate SupportAssist. Or this one, about how SupportAssist failed me for the last time.

I would like to apologize to SupportAssist. I slandered its reputation for a problem that it did not cause.

That’s not to say that SA isn’t a ridiculous piece of badly programmed junk. It totally is! This past Wednesday, it merrily failed to update any applicable drivers on our public computers, which is fine because the infinitely superior Dell Command Update does the same thing. But in the particular case of Computer 43, SA’s problematic nature had been compounded by a bad motherboard. I hope. Because 43 hasn’t frozen since receiving a new one yesterday, so maybe, if I don’t tell any lies before Christmas, the real problem won’t end up being the hard drive or the processor.

I’m currently taking a hardware class, so I’m enjoying the intellectual challenge of identifying what exactly went wrong. Was it the BIOS chip? The CMOS? Oh the acronyms that could have gone wrong with the motherboard! It now makes perfect sense that freezing could indicate a motherboard issue – I already knew that BIOS or UEFI can cause that problem if they don’t update correctly. It makes me wonder if I ought to have tried flashing before calling in the warranty, but c’est la vie. The computer works and that’s sufficient.

It’s a little annoying that I can’t House my way to a magic diagnosis based on the evidence, but I’m still a nascent techie in many ways and I’m not going to go too hard on myself. The main thing I’m learning from my experience as a tech librarian is that if something’s only going wrong on just one computer, I should at least consider the possibility that it’s hardware-based. This kind of thing has happened a couple times before, not necessarily with SupportAssist, but in a similar pattern. (Problem on one single computer, fix software, problem persists, switch hardware, problem solved.)

I did think it was funny at the time that none of the other computers were freezing, but I chalked it up to SA being so wonky that it was actually inconsistent across units. Apparently, SA is the red flag to my bullish IT style. A diagnostic startup scan didn’t catch any problems, either, so now I know that can happen. And I need to be aware of my software prejudices, apparently.

I’m not sure I would have done anything differently if I’d guessed that the problem was hardware-based, but I still would have felt better knowing. If nothing else, I could have prepared the staff for the possibility that the computer would continue to freeze even after the apparent software problem had been managed.

If I wanted a secondary lesson, it would be that a library technology professional’s job is mainly to communicate. That means understanding enough about the computers to explain ongoing issues in a way that both makes sense and is not scary as well as developing the ability to interface with customer service in a way that works for everybody. I do think that I’m improving. I’ll say that 50% of the reason for this is that I’m in school and actively learning about computers. Knowing a bit, while remaining humble about the vast sea of knowledge to which you do not yet have access, seems to be key to a good working relationship with tech support. I’m also continuing to grow and mature as a person and a professional, which is causing my communication skills to improve anyway, and librarians as an industry are steadily becoming more tech-savvy, although we’re still way behind where we need to be.

For now,  we have a new motherboard for good old 43 and everything seems ducky. No freezes yet. I’m almost ready to sally forth next week to a long Thanksgiving vacation with full peace of mind that this computer’s got a working motherboard.

Let’s hope it was just the motherboard.

Diary of a Librarian: Windows 10 Is Still Free. Also, more SupportAssist.

It’s true. If you have a Windows 7 machine, you can still get an upgrade for free. It’s legal, too. Go to the Microsoft website at this link and download the media creation tool. Run it. Do it now before the 7pocalypse arrives in January!

And don’t take it from me. Take it from ZDNet.

In bookish news, I’m still working on Part 3 of my DHALGREN review. (Part 1 is here.) I might have it up tomorrow, so grit your teeth and hang onto your harmonicas. For now, join me in the sweet, easy, fun library life, where we skip through fields of aahhhh who am I kidding SupportAssist did another crazy thing today.

This time, I had a computer (One! Single! Computer!) on our staff network freezing at odd times. It started yesterday with freezes that happened closer and closer to startup and did not respond to ctrl+alt+del. I crashed the poor thing and performed a system restore, feeling very technological and cool. That seemed to solve the problem.


It didn’t take long for dear little Computer 43 to fritz out again. Today, it froze after a restart, and then during a diagnostic scan. I called uncle, and Dell, too.

I avoid calling Dell because my customer service experience with this company is extraordinarily spotty. Sometimes they’re super-on. Other times, their technicians make little pew-pew noises when they think they’re on hold and then delete networked printers willy-nilly over my strident objections. This time, I was lucky. My dude figured out that SupportAssist had been causing the system to freeze up at a deep fundamental level.



Part of the reason for this was that SA has two versions. One is a Windows app and the other is a Dell app. You can get the Dell app from the Dell website. You can get the Windows app from the Windows App Store. That one appears to be buggy. It may also be either advertising itself very aggressively or chronically reinstalling itself on some machines. This actually explains a lot about how my library’s public-facing machines have been behaving.

So he uninstalled SupportAssist, although it took him a couple of attempts, and suggested that we not use this Dell-origin piece of wrecknology anymore (thanks, Christine, for this situationally perfect word.) I’ll be passing his suggestion along. If I never had to lay eyes upon SupportAssist again, I’d be happy. I’m now 14% sure that this is how God intends to end the world.

Diary of a Librarian: SupportAssist Is The Root Of All Evil

Technically, I’m a technology librarian. That means that I know kind of how to make the computers behave themselves under ideal circumstances. Under less-than-ideal circumstances, I can either call tech support and spend hours on the phone or gracefully give up and text our IT contractor. However, there’s a decent handful of problems that I can manage on my own.

In a strictly professional sense, SupportAssist is one of these. However, I am not emotionally qualified to handle this cringingly horrible piece of Dell bloatware. Every time it does a new weird thing, which is about once every other week, my heart falls.

Even when SupportAssist is working correctly, everything about it is annoying. For example, when it’s processing, it flashes three little waiting dots. One two three. Right? Dot 1 flashes and goes out, dot 2 flashes and goes out, dot 3 does the same, then repeat. Right? RIGHT?


SupportAssist’s first dot flashes correctly, but the second and third flash together. Simultaneously. Every. Single. Time. Even though it’s a stupid superficial thing that doesn’t matter at all, the obviousness of this bug galls the hell out of me. It looks so bad. Also, if your intuition tells you that someone who missed that glaring issue might have missed others, then give that intuition of your a big wet smack on the lips, because it’s a winner.

Problems with SupportAssist abound. I could schpiel on for days about the nonsense I’ve endured with this damnable program, from times I’ve tried to remove it (it reinstalled itself) to times I’ve tried to update it because it was being an enormous heckin’ vulnerability. (Incidentally, during that fascinating episode, SupportAssist actually refused to install. What a world!)

For the past several weeks, I’ve been trying to stop SupportAssist from forcing popup notifications on our patrons. These are just update requests, but they require an admin password, and patrons, skittish darlings that they are, aren’t equipped to deal. Anyway, making any change to these computers requires turning off our disk imager, DeepFreeze, before I make any changes. There are a couple of restarts involved. The process is a bit of a slog, but it’s worth it because DeepFreeze is a great piece of software that keeps everybody’s filthy data off our nice clean library machines.

So I’m not sorry that I’ve been unfreezing and freezing our DeepFreeze clients for the last month, trying to figure out how to make SupportAssist stop yelling at our patrons. That’s just part of the game. I’m also thrilled that our IT consultant figured out a lasting fix – yay! What maddens me is that today, when I tried to apply said fix, I discovered that the issue had begun because SupportAssist had either a. tried to update itself and installed a bad version; b. become universally corrupted on all computers and decided to watch the world burn instead of working; c. decided to ask the user before updating its own bad self while also not being capable of doing that because it was too broken; d. all of the above.

I’m going to go with d. Somehow, it’s d.

That meant that I had to reinstall SupportAssist on each machine just so that I could tell it to never notify the user about its need for updates, driver or otherwise, ever again. It took…a while. I spent a lot of time watching its little waiting dots.

On the bright side, it does seem to have worked. As a certain TV hero once said, I love it when a fix comes together, at least long enough for the program to un-toggle it and/or go wonky so that I have to go back in and start all over again.

Until next month, SupportAssist.

Audiobook Apps And Why They Bring Me Joy

I’m in an enviable position right now. I have too many audiobooks on my phone.

I should back up and say that I have at least two audiobook apps on my phone at all times. Libby is my go-to and my sweet summer darling. I’ve got an eternal fountain of audiobook holds backlisted in OverDrive just so that my Libby cup never runneth dry. And so far, it has not.

Librivox is another one, but I have a tense relationship with the app. LibriVox is a free, nonprofit, public domain book recording and distribution website. I’m not sure if they also created the app. I’m guessing not. The app is free and works well, but it’s ad-supported. All right. OK. We do what we must to keep the lights on, and after all, the books are free.

The ads are for e-cigs.

Not sure where BookDesign got their demographic info if any research went into that decision. Maybe they just couldn’t get any other advertisers. I don’t know. It doesn’t really matter. Listening to a random woman gush about e-cigs after every chapter puts my teeth on edge. Call me an elitist if you must, but e-cigs are the filtereds of our generation and I do not at all believe that they help you to quit smoking. Neither does WebMD. However, there’s also no better way to burn through the classics than with the Librivox app. It even has Apple CarPlay compatibility. If I take up e-cigs, you’ll know why.

Finally, I listen to I discussed this app when I reviewed Bill Bryson’s THE BODY a few posts ago. It’s the only platform I currently use where I’d pay for books, if that were something that I could afford to do on the regular. Luckily, I’m a librarian who writes voluminously about literature, and therefore, I get advance listener copies from for free. This is new and really, really something. I don’t even know that to do with myself, I’m so excited about it. I have Erin Morgenstern’s The Starless Sea: A Novel ready to go just as soon as I finish Dhalgren. (And oh, my friends, you’d better believe there will be a Dhalgren review.)

Paris Review - Samuel R. Delany, The Art of Fiction No. 210

This man is Samuel R. Delaney, author of Dhalgren. He has taken over my life with his book.

I must have five audiobooks all queued up and ready to inundate my ears. We’re talking solid days of literary wonder. That said, it’s worth mentioning why I listen to so much audio.

I don’t really have time to read.

That’s right! The book woman doesn’t have a minute to crack a cover. This is in part because I spend two-plus hours on the road each weekday driving to and from the library where I work. It also has plenty to do with my secondary job, vis a vis writing, which takes a lot of time. I’d scale back, but we do have this thing we like to do every month called “pay rent.” And, honestly, I love to write. I’d write all day if I could. If I could write about reading all day, I’d do that. And then I’d read too.

yesss baby | Meme Generator

He can’t even read and he’s still psyched.

As things stand, I am but a hardworking librarian with a hefty side hustle, a situation that’s not unusual these days. What I’d really like to know is how many people find themselves in my position. Are we becoming a nation not just of overworked millennials, but of overworked millennial audiobook fans? Are changes in how we work leading to changes in how we read?

It makes you want to sit down with a nice e-cigarette and have a good, long think.

Diary of a Librarian: The Charging Cord Blues

I’ve had a lot of burners on the stove lately. In addition to the biggies, which I won’t discuss because they will bore you, I must keep my Libby-based digital audiobook stash fresh. This means zooming through The Cuckoo’s Calling at 2.5x normal speed so I can read whatever’s just downloaded from my holds list.

The things that stress out librarians.

Also stressing me out is the cost of replacing our charging cords. At my library, we hand out charging cords in exchange for a collateral ID card. Usually, the people who need charging cords are kids, and usually, they don’t have any ID on them.

What am I going to say? No, foolish child! Go file for a state ID and then come see me about this $30 cord after a seven-to-ten day wait for shipping! Ugh. Obviously I let the kids take the cord, and they’re generally pretty honest. I have them write down their name and phone number just in case they forget to bring the cord back, but that would be tough these days. I’ve figured out a way to wire a laminated tag to the plug housing in such a way that it can’t be gotten off without breaking one of the wires.

From now on, any disappearances are definitely theft. Conceptually, disappearances might have been happening before now, but one cord looks very much like another and we’d incorporate enough found cords into our little collection that our supply remained fairly stable. Not that it’s not theft to swap out your busted cord for our nice one. I wouldn’t be 100% surprised if this is why our cords have been aging so fast, because they have been aging fast. One day, the cord is brand-new; the next, it will not charge for god or country.

On the other hand, we also get cord donations occasionally. I’m fairly sure that these are well-meaning, but it results in a couple negative eventualities:

  • The used cords become busted cords more quickly anyway, and since we don’t know the cord’s age we can’t really guess when that will happen
  • We end up with irregular and off-brand cords that don’t work as well as quality ones
  • As bad as lookism is, it’s nice to have a consistent brand, and a random hot green cord disrupts our branding game
  • We always have a ton of Android cords and never have enough iPhone cords.

We’ve flirted with the idea of getting dedicated charging stations for the library before, and although they are fairly expensive, I think they’d solve some of the squirrelly minor issues with lending charging cords. Now that we’ve got to revamp our entire reference floor anyway, it seems like it might finally happen. That said, I sincerely hope that we get one for each floor so that people don’t have to glom onto just one unit.

We’re going to have to be conscious of replaceability if we go with a standalone charging unit a la conference or mall charging kiosk. The other reason that our cords might be aging out so fast might have to do with how patrons are using them. As usual, the root problem is data collection. We don’t really know what the patrons are doing to our equipment, though the imagination paints some interesting pictures, and if we don’t know that, we don’t know nothin’.

On the other hand, we could just gin up some shoeboxes with power strips inside. Added bonus: we could decorate those any way we wanted. Housing options are essentially unlimited. We could use a bread box, a basket – god, one trip to A.C. Moore multiplies the possibilities. There are myriad ways to hide a bus. Maybe we could borrow a few extra dollars from the replace-iPhone-cords discretionary fund for security measures. I figure a few wall anchors, some tastefully disguised chicken wire, and a padlock ought to do the trick.