Seitan is Back, And He Looks Like Crap

So I’ve been experimenting with making my own seitan, not from vital wheat gluten as one might purchase from Bob’s Red Mill for a goshdarn mint, but from whole wheat flour. Boy howdy has this been an adventure! This week, I soaked a bunch of flour, which went great except that I hadn’t made it into dough first.

D'oh | Simpsons Wiki | Fandom

In the hours of sieving and rinsing that followed, it became abundantly clear to me that one must first make the flour into a dough, then rinse and knead such that the carbs on the outermost layers consistently wash away, leaving you with a ball that gently shrinks into gluteny goodness instead of a whitish soup that you then have to pass through a strainer and mush with your fingers.

Anyway, I did get seitan out of this, but it was grainy (bran!) and needed to be cooked. Brilliantly, I thought I’d stir-fry it. Halfway through this process it became clear that the seitan either wasn’t rinsed as thoroughly as I’d thought or it needed to be boiled first, because it was falling the heck apart. So I decided to boil it in situ – did I mention I’d marinated it for a while before all this went down? Well I did – and dumped a bunch of water on it. Then I went back to work, because most of this was happening on my lunch break, and essentially forgot about it.

I came back and the water had all boiled away. I had on my hands a massively unappealing mound of brown goo, not quite solid and not quite sauce. It tasted like smoked steak, except to such an extent that it hurts your mouth, and looked exactly like shit.

Red Devil from Scream Queens is sad - Drawception

Luckily, I have a backup plan. You see, this, my friends, is Friday. That means that I am prepared with that most beautiful of culinary treats: a 1-lb packet of Beyond Beef. I’m also possessed of bread, which I threw together this morning on the off chance that seitan stir-fry would somehow, in a twist of fate nigh inconceivable to my mortal mind, not happen.

So I’m going to fry up a few burgers and use my overmarinated brown goo seitan squelch as a condiment. I bet it’ll be awesome. If it’s not, we’re going to eat it anyway because it’s still nutrition gosh darn it and for this seitan I spent an hour of my precious, finite life with a sieve. (I’ll mix it with rice. It’ll be fine.)

But there is time before I must hie unto my hot stove, friends. My wife works until well after 7 and I have had such a day that I have not really run through my coding exercises yet. Obviously I had to run and breathlessly report my seitan adventures because IT’S SEITAN, but now I will return to my regularly coded practice.

I’ll leave you with this: yesterday was a good day because I learned that, in Python, you don’t necessarily have to make a whole if statement if you want to return a True or False. You can just stuff your parameters into a return. Behold in awe as this clugey nonsense, which used to be my mode:


…becomes this sleek, gorgeous nonsense, which is my mode au courant!


Maybe not a killer app, but I was pleased.

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.

Lordy lordy, I’m out of public libraries

Fresh out. Clean out. Well, almost. I’m now a customer support librarian for a public library consortium, and who knows what’s next! I’ve still got that networking certificate humming along – should have that done by next year, actually. (God willing and the creek don’t rise.) After that, I’m probably going to start chipping away at a CS bachelor’s, focusing either on databases or development. What can I say? A girl can get a late start on her secret IT ambitions and still have dreams.

The past month has been something of a blur and rather than drop any balls, I set several balls carefully aside, as one might do with ornamental glass fruit or the skulls of one’s revered ancestors. The writing ball is one that I did set aside, but I’m hoping to pick it right back up. I know, for one thing, that Book Riot languishes without my scintillating listicle-writing presence. I’ve also been uncomfortably absent from the fiction-writing scene, and you know what? I think I’ll publish under my real name from now on. Look out, world!

I’ve got a few other pots on the stove, but I think I’ll let those boil over before I alert you about the terrible danger in which we will all, at that exact moment, find ourselves. This blog is going to continue to be (loosely) about librarianship, and cooking, and gardening, and sustainability, and most especially about computers.

I’ll leave you with this: it is STUPID EASY to accidentally make a new file in Powershell. Yesterday, I managed to make testfile1.txt, testfil1.txt, test1.txt, and all of the above without their file extensions. Then I tried to move a file named Massive Duck Attack.txt and discovered exactly why underscores are so blamed important. Let’s hear it for practice with the Rename-Item cmdlet! (And the humble underscore.)

Also, I’m reading Gideon the Ninth and it’s everything I’ve ever wanted. I also just finished Lives of the Monster Dogs and I think the book about stylish lesbian necromancers in space is less weird. Loved it, may buy it. Finally I’m listening to City of Brass, and so far, it’s fancy but predictable. I guess I could say the same thing about Gideon, but there’s a swordsdyke in that one so it gets extra points.

Until next time, boys and ghouls.

Saturday Fast Rec: Python For Kids

It’s Saturday! That means I recommend a book that I think you’ll like. (Yes, you!)

Today, I’m recommending Python for Kids: A Playful Introduction to Programming by Jason Briggs from No Starch Press. And I’m recommending it…for adults!

That’s right! If you (yes, you!) want to learn how to code, Python is a great place to start. It’s versatile, easy to learn (relatively speaking,) and professional coders do use it in actual applications. Kids can absolutely learn to make basic programs using the fun and surprisingly practical projects in this book, but I’m not ashamed to admit that this is where I started my own coding journey…at the age of 30. Remember that Jeopardy! champ who taught himself everything using children’s books? It’s not a bad way to introduce yourself to something new. Personally, I’ve not only learned to love Python thanks to Python for Kids, but found myself well prepared for the infamously difficult Java classes at my college because I’d already learned a similar programming language.

This book is fun, hands-on, and wonderful for all ages. There are some knockoff programming for kids books from other publishing houses, but don’t settle for them. No Starch Press is the best. This book is exactly where to start for kids or adults, and there are follow-up books that will rocket your skills to the upper atmosphere, if not to the moon. I recommend!

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: Continuing Ed

So I just sent a spec in to a librarian magazine in the hopes that I might become a regular review columnist for them. Yay! I’m incredibly happy to have gotten the opportunity, and even if they decide to go with someone else, it was nice to be asked. It was also nice to know that I haven’t been reading professional literature for all this time to no purpose.

We’ve got a tricky job as librarians. We need to be steady ships on rough seas, people who know stuff in a world where stuff is always changing. Our job has recently become far more challenging because of this, but I suspect that’s just a matter of degree. Public libraries really became a thing in the teeth of the Industrial Revolution, when a new invention was popping up to supplant a human worker every other year. Melvil Dewey, an utter bastard who you can read about in my Book Riot piece, noticed that people were unhappy with that and invented the library to pacify them with Christian values. No joke, dude was a tool. Dewey’s attempt to reify class structure through Bible stories lasted about as long as a snowball in Tahiti, but it still indicates a basic awareness that the needs of the public were changing and growing. Librarians after him did somewhat of a better job interpreting this omen. Hence, literacy programs and children’s story times.

The wheel of so-called progress has only revolved faster since then. I left library school ten years ago and I’m amazed at how out-of-date my education is already. For example, patrons are now interested in searching Instagram. That is something I most definitely did not learn about in school. When I graduated, we all thought that we were going to be uploaded into Second Life any day.

My point is this: it is incumbent upon us librarians to keep educating ourselves. If we fall behind, our patrons lose a critical resource. Whether about searching social media or pronoun use, we absolutely have to crack those ALA editions texts. We have to collection-develop them and assign ourselves reading.

And, when possible, we really ought to take classes. It almost doesn’t matter in what, although in my perfect world, all librarians could get complementary continuing-ed badges to that no library is without someone who’s familiar with the most common topics. I’ve found MOOCs to be difficult to follow through upon, but that’s me. Maybe if I were doing it in a group – and if it were my job – I’d be better able to stick to it. Meanwhile, a better strategy for me has been traditional school. I’m currently taking tech classes at a community college, ideally for an IT certificate but absolutely to improve my ability to work with computers, since that’s the role I seem to be falling into.

The idea that all librarians can just pick up and take a class is, of course, unfair. My library has a fund that’s paying for my classes, and Lord knows what’s going to happen to these lofty ideals when I pop out a kid. Even one class is a big ask. But burning through a Libraries Unlimited text twice a year? Reading American Libraries at the desk? Taking a MOOC as a group? Maybe doable.

So in summary, I have run out of things to say. I now have to go do my CPS 130 homework. It is due on Monday and at this rate I’ll still be hashing out the differences between a serial and a parallel port by then.