Installing PyGame with Python 3.5 on Windows 10

Quick installation notes for PyGame with Python 3.5 on Windows 10 since the available installers didn’t work for me, the symptom being the apparently highly frequent “pygame module has no attribute init” error when trying to call pygame.init() after importing pygame.

First if you’ve run any PyGame installers previously, make sure to clean up anything they installed. The easiest way to do this is to run the installer again and choose the uninstall option, but you may also want to check the Lib/site-packages directory under your Python installation to make sure there aren’t any remnants.

Next, go here and download the appropriate .whl file for your environment.

Next, open a command prompt and run:
pip install wheel

Finally, browse to the directory where your downloaded .whl file is located and run:
pip install pygame_file_name_here.whl

Restart your command prompt to be safe, and at that point you should be able to do this in a Python interpreter without getting errors:
import pygame

Hope that saves someone else some head against desk time.

Cisco AnyConnect on Surface Pro 3

If you get the dreaded “failed to initialize connection subsystem” error when trying to use AnyConnect on the Surface Pro 3, or on Windows 8.1 in general for that matter (though it works fine for me on my ThinkPad T540p), there’s a lot of differing opinions on how to fix it so I thought I’d share the one that worked for me.

What absolutely did not work for me (but that apparently works for other people based on frequency with which I encountered this solution) is just running AnyConnect through the Troubleshoot Compatibility wizard. That had zero effect for me.
What did work is this:
  1. Hit the Windows key and start typing “AnyConnect” to bring up AnyConnect in the search/launcher thingee (as I call it)
  2. Right-click on AnyConnect and choose “Open file location”
  3. Right-click on AnyConnect in Windows Explorer and choose “Properties”
  4. Click on the Compatibility tab
  5. Check the “Run this program in compatibility mode for” box and select “Windows 7” in the drop-down
  6. If you have a high-resolution display and AnyConnect looks fuzzy, and you care, you can also check the “Disable display scaling on high DPI settings” box
  7. Hit OK to save the changes.
  8. Reboot for good measure.
There have also been some previous issues with IE 11 updates breaking AnyConnect (yeah, wrap your head around that one) but those seem to have been resolved as long as you have your machine all patched up.

Installing and Configuring NextPVR as a Replacement for Windows Media Center

If you follow me on Google+ you’ll know I had a recent rant about Windows Media Center, which after running fine for about a year suddenly decided as of January 29 it was done downloading the program guide and by extension was therefore done recording any TV shows.

I’ll spare you more ranting and simply say that none of the suggestions I got (which I appreciate!) worked, and rather than spending more time figuring out why, I decided to try something different.

NextPVR is an awesome free (as in beer, not as in freedom unfortunately …) PVR application for Windows that with a little bit of tweaking handily replaced Windows Media Center. It can even download guide data, which is apparently something WMC no longer feels like doing.


I wound up going down this road in a rather circuitous way. My initial goal for the weekend project was to get Raspbmc running on one of my Raspberry Pis. The latest version of XBMC has PVR functionality so I was anxious to try that out as a potential replacement for WMC.

Installing Raspbmc was easy enough and the base install is working fine, but based on what I’ve read it may not (yet) be up to functioning as a full-blown PVR like I’m used to, and will likely serve better (as some folks on Google+ suggested) as a front-end to something else.

That led me to searching around for a WMC replacement that will run on Windows 7.

Given my huge preference for free (as in freedom) software why continue to use Windows and not move to something like MythTV? Honestly I’ll probably go the MythTV route eventually, but in the near term I was just looking for something that would quickly allow me to schedule and record shows again. I’m running WMC on a very nice Acer Revo, which has a DVD player form factor and is designed to function specifically as a media center, complete with a nice pop-out dual-function mouse/keyboard pad. I’ll go the full free software route another weekend.

As I looked around I came across this article on Lifehacker about turning a Raspberry Pi into a media center, and it too was focused on the Pi as a front-end to another machine that does the heavy lifting. Honestly I like this idea anyway — sticking a quiet, low-power Raspberry Pi behind every TV other than the one with the NextPVR box seems like a slick solution.

Installing NextPVR

Installing NextPVR is very straight-forward — I mostly just did what’s outlined in the Lifehacker article.

  1. Download the latest version
  2. Download the patches and copy them into the directory in which you installed NextPVR
  3. Start NextPVR and adjust the settings

The specifics of that last step will be dependent upon your hardware. Note that the default buffer directory of C:Temp may not exists so if you get an error related to that when you fire up NextPVR, just create that directory and restart NextPVR. I also did enable the background recording service as recommended.

In my case I’m using a SiliconDust HDHomeRun as my tuner, which means I do not have a tuner card in the media center PC. The HDHomeRun makes three tuners available over ethernet, and NextPVR sees them out of the box, though there is some configuration and installation of codecs necessary to get things working properly.

Watching Live TV on NextPVR

Next you’ll want to configure NextPVR to be able to watch live TV, and the first step in this process is to have NextPVR scan your tuner devices to get a channel listing.

With the HDHomeRun I simply had to go into devices, choose each tuner, and click the “Scan” button. I have digital cable so this pulled back a little over 500 channels. Note that you have to do this for each tuner. You can tell it to copy a configuration from one tuner to another, but I found that to be much slower than performing the scan on each one individually.

The first problem I ran into after the channel scan is that although NextPVR sees the HDHomeRun fine, when I tried to watch live TV I got no picture or sound. I could see that it was talking to the HDHomeRun since I saw the tuner light come on and it was going through the motions of changing channels, and even had the channel names correct, but there was no picture or sound.

If you have this issue don’t panic; it’s very likely you just need to go into the NextPVR settings and choose the correct decoder. If you don’t have valid MPEG2 or AC3 codecs installed, which are the video and audio formats the HDHomeRun uses, you’ll have to do that separately.

In my case to get the video working I had to enable the MPEG2 and H.264 video decoders, and for those I selected the “Microsoft DTV-DVD Video Decoder” that was already installed on my machine.

As you change these settings, make sure and restart NextPVR. I’m not sure that’s supposed to be required but with both audio and video I had to restart NextPVR for the changes to take effect.

To get the audio working, I had to install additional codecs since I didn’t have any on the machine that could handle AC3 audio. For MPEG1 audio the Microsoft DTV-DVD Audio Decoder should work (though I can’t confirm since I’m not sure I tested any MPEG1 audio specifically), but it definitely didn’t work for me for any of the other audio types.

Some suggestions for fixing this issue were to install Windows Media Center since it comes with codecs that won’t otherwise be on the machine, but from what I could tell anything WMC installs is pretty MS-specific, so you’re better off installing more agnostic codecs.

Luckily there are some excellent free (as in beer) codecs available. What I ended up installing was the Windows 7 Codec Pack. This comes with codecs for just about every audio and video format you can imagine and gave me what I needed to fix the lack of audio.

One the Windows 7 Codec Pack was installed, I selected “ffdshow Audio Decoder” for all the audio types other than MPEG1, and after restarting NextPVR I was getting audio. Again I think the only audio type I was really verifying was AC3 since that’s what the HDHomeRun uses, so if you have a different setup that requires different decoders, you may need to try some different options.

Downloading Program Guide Data (EPG) and Mapping Channels

With video and audio both working there was one last problem to solve, namely program guide data. Without guide data you won’t know what’s on and, as I discovered the hard way with WMC, you won’t be able to record anything.

In the case of the guide data I decided to throw a little money at this problem. You don’t necessarily have to pay for program guide data but from the little bit of research I did it seems like the free solutions would require some ongoing interaction on my part (or some scripting), and I don’t want to turn recording TV into another job for myself, so I decided to pay for it. If you want to investigate solutions like XMLTV and others, the NextPVR wiki page on program data (EPG) is a great place to start.

Specifically, I decided to pay $25/year for a Schedules Direct account. It integrates completely seamlessly with NextPVR and based on what I read was well worth the money compared to dealing with this yourself. (I’m not averse to a little scripting and hacking but I have enough side jobs at the moment!)

After getting a Schedules Direct account, you then create a listing in Schedules Direct, which is done by providing your zip code and choosing your cable provider.

Once the listing is created in Schedules Direct you then go into the Channels section of NextPVR, enter your Schedules Direct login information, pick a listing, and then program guide data will be continually updated for you.

That’s not quite the end of the story though. You still have to map the channels so NextPVR knows which channel in NextPVR goes with which channel in the lineup.

This is where I think NextPVR could use a little bit of work. You can do a bulk mapping, which works pretty well overall (though verify because it did mismatch some in my case), but if you do the bulk mapping and manually change any specific mappings it asks you every time you change one if you want to have it scan and try to do a bulk match even after it already did that. Minor annoyance but seems like it’d be an easy fix as well.

With all that in place, in the Channels section of the NextPVR setting I clicked the Update EPG button and a couple of minutes later, program guide data was available. (Take that, Windows Media Center!) Then I could finally go in and start recreating the season passes I lost when I tried reinstalling WMC.

As for the Raspberry Pi …

Since I basically took a huge detour from my original goal of getting XBMC up and running on my Raspberry Pi, that piece isn’t quite done yet. Raspbmc itself is running fine, and I installed the PVR Client for NextPVR, but it’s not working properly for some reason so I still need to dig into that.

Once I get that figured out then I can have the Raspberry Pi hooked up to a TV in another room and watch either live TV or recordings from the NextPVR box, which will be very slick. I’ll do another post on that once I get it working.


Overall I’m quite impressed with NextPVR so far. The installation was quite simple, it saw the HDHomeRun without any problems, and the codec issues I ran into were very easy to solve.

The UI may not be quite as slick, strictly speaking, as WMC, but it’s also a lot cleaner and zippier, and I’ll take that any day. With the guide data in place I’m very happy with the functionality and don’t think I’ll miss anything at all from WMC.

Longer term I’ll definitely look into MythTV so I have a free as in freedom solution, but this was a quick and easy project that at least got me up and running again after the WMC meltdown.

The first real test of my new setup will be when NextPVR records The Walking Dead tonight. As WMC found out if it screws that up, it’s history.

TeraCopy: Unbelievably Great Windows File Copy Replacement

I don’t use Windows often but when I do, one of my major complaints is how absolutely abysmal the file copying process is, particularly when copying a large number of files, and especially when network resources are involved.

I suppose given how much it annoys me I should have looked into it sooner, but I was looking at the 2012 Lifehacker Pack for Windows which is a list of “must have” applications and utilities for Windows (they have lists for Linux, Android, and that fruit-related company’s junk as well), and one of the items in the Windows list is a utility called TeraCopy.

In short, if you ever have to use Windows go download TeraCopy right now. It replaces the native and horrendously crappy Windows file copy process, but it works so much faster and better it quite literally put a huge grin on my face (and I never smile while using Windows).

Not only is it lightning fast, but it lets you pause and resume copy operations and — GET THIS — logs all the copy operations that fail. This is fantastic because the native Windows copy process often chokes for no reason (or at least it doesn’t share the reason) and you have no way of knowing where it failed or what got copied and what didn’t, so you basically have to start over.

Enough gushing, just go grab TeraCopy right now and dramatically improve the Windows file copying part of your life.

Automatically Backing Up Directories From Windows to a Pogoplug

Since this was more confusing than it should be I thought I’d throw this out into the wild in the hopes others in this situation will come across it in their searches.

If you have a Pogoplug (and if you don’t, get one! they’re awesome!) you may find yourself wanting to back up specific directories on a Windows machine to your Pogoplug. Note that on Linux you can of course connect to the Pogoplug and use whatever Linux scripts/tools you want to back stuff up (rsync being my tool of choice), but since Pogoplug does have a native Windows Pogplug Uploader tool you can use that to get this all going pretty easily on Windows.

The only tricks here are figuring out the Pogoplug terminology and then figuring out how to configure things. Nothing against Pogoplug since I know they’re trying to make a buck, but by default everything you do either in the browser-based tool or in the Windows application will drive you towards using Pogoplug’s cloud space as your backup. This is a perfectly valid option, and gives you the added security of having an off-site backup.

For the Windows machine in question, however, I’m already backing it up off-site using Spideroak, so all I really wanted was a way to make sure every file that gets put into the Documents directory (meaning music, photos, etc.) also makes it over to the Pogoplug. This is both as a “local” (meaning in my house) backup as well as so the music and photos can be streamed from other devices.

The first thing you need to know is “backup” in Pogoplug terminology means backing up from the Pogoplug device’s drive to the Pogoplug cloud. To put it another way, you cannot (at least from what I can tell) back things up from your local machine to the Pogoplug device via the “backup” section in the browser-based tool. Also note that if backing up from the Pogoplug to their cloud is something you do want to do, you have to do that through the browser-based tool since backup options are not available in the Pogoplug Uploader that runs on Windows.

What we’re looking to do here in Pogoplug terminology is sync, not backup. Makes perfect sense when you think about it. Sync options are available only in the Windows (and Mac probably)-based tools, not in the browser interface.

Let’s set this up.

First, open the Pogoplug Uploader on Windows. In the top menu you’ll see a “sync” button. Click that.

At the bottom of that screen there’s a + button which lets you add local folders you want to sync. Click the + button and choose a local folder to sync.

You’ll then see that by default the destination directory on the Pogoplug will be the root of the drive attached to your Pogoplug. If you want to sync to another location on the Pogoplug’s drive, simply click the “change” link next to the destination location. This will give you the option to choose another destination on the Pogoplug drive, or you can also sync directly to the Pogoplug cloud.

Hope others find this helpful!

Why I’ll Never Buy Another Lenovo Computer

I won’t bore you with all the details since they’re in another post, but despite my overhwelming preference for GNU/Linux for some very specific reasons I wound up needing to get a Windows laptop last month. I didn’t need anything terribly fancy and Costco had a good deal on a Lenovo G770 so I went for it.

Well, ever since I got the thing it’s been bluescreening and/or just shutting itself off periodically, consistently every single night and at other random times during the day.

I don’t think it’s ever crashed while I was actually in the middle of using it, and as I mentioned in my previous post it seemed to be related to power saving activities (e.g. screen dimming, etc.). Since this isn’t my primary machine it wasn’t enough of a nuisance that I dropped everything to figure it out.

I did some searching and troubleshooting as I had time, looked for updated drivers and BIOS, etc. and since all else failed, I figured what the heck, it’s under warranty, let’s call support and see if they have any bright ideas.

I started with the Costco Concierge support that came with the machine, and I was pleasantly surprised. They answered the phone right away, listened to all the troubleshooting I’d done thus far and based on that had a couple of suggestions I hadn’t tried, and overall were quite good.

That didn’t fix the issue however, so they connected me to Lenovo support. Lenovo asked me a bunch of questions to try and eliminate the hardware being the issue (I’m still not convinced it’s not, personally), and they said since it sounded like it was just a power saving driver issue they’d pass me on to software support to get it resolved. The software support queue was very backed up so they said they’d put me in for a callback within an hour.

Several days passed and I hadn’t heard anything (again, not a terribly pressing issue) so I finally called the phone number they gave me and gave them my case number. After 30 minutes of back and forth with the support person (and I gave them a case number, remember) I was told I had dialed hardware support and that I had to talk to software support. (I dialed the only number they gave me, but whatever.) They again told me I’d get a callback but this time in about 15 minutes, so I figured I’d give it an hour and just call back in if they didn’t call.

About an hour later I received a call from software support. This is where stuff gets really fun. I explained the issue again, and the short version of their response is that since this is a software related problem as opposed to a hardware related problem, the software is not covered by the warranty but they’d be happy to fix my problem if I either paid for a single incident support ticket, or upgraded to the premium warranty which does cover software.

The cost for either choice was $179.

So I said to the support tech, “Let me get this straight. I bought a Lenovo computer with your installation of Windows on it and your drivers, it’s never worked right, and you’re telling me that you don’t support your own Windows installation and your own drivers.”

His response was, “Sir, we find that 70% of software problems can be resolved by users themselves so it doesn’t make sense to make people pay more for the computer in order to have that covered since most people don’t need it.”

Trying not to be offended (I’m a 1337 g33k dammit!) I explained to the guy that I was a computer programmer by trade, and that I had spent quite a lot of time trying to solve the problem myself because I absoultely hate calling tech support since they aren’t ever terribly helpful.

I then said, “Look at this from my perspective. I bought this machine. It doesn’t work right. I don’t care if it’s the hardware or the software. I just expect a brand-new machine to work properly. I find it astonishing that you’d sell a computer that YOU configured and if there’s something wrong with the software that YOU pre-install on the computer, that it’s not supported without an additional charge of about 25% of the cost of the machine.”

He just parroted back the “most software problems can be solved by users” line.

I said that’s ridiculous, but fine, I’m wasting my time here so I’d like to return the machine since it’s still under warranty and I don’t like the way Lenovo does business.

He told me Lenovo’s return policy is 21 days, which I was just outside. So basically I got penalized for trying to troubleshoot it myself and not calling in sooner.

I was pretty pissed at this point but I figure ultimately I need the damn thing working if I can’t return it, so I said, “If I pay the $179 you guarantee this thing will work and you’ll keep on it until it does, including sending me a new machine if you can’t fix it?”

Short version of his response was that they guarantee they will do everything they can to fix it and if all else fails, they’ll send me a system restore disk.

Well that’s just dandy. Given that scenario they have no actual incentive to spend any time fixing the problem. Their time is money, but apparently my time is free, so here’s how me paying for a premium warranty would play out. I’d pay the $179, they’d probably spend 2 minutes saying stuff like “have you tried rebooting?”, and then they’d send me a very pricey restore disk and tell me to wipe the computer to put it back to its original state.

I explained to the guy that it didn’t work in its original state, so why on earth would they expect a system restore to fix the problem? Not to mention I already had spent quite a lot of time doing all the Windows updates and installing software.

Since that’s all he could do I told him I’d call Costco or my credit card company since I bet they both have better return policies than Lenovo directly. He said he’d call me back in an hour to see if I still wanted to pay them $179 to fix things.

Small detour here–don’t get me wrong, I understand I bought a “value line” laptop. I’m not expecting a $3000 ThinkPad for 1/3 the price. What I do expect, however, is that the machine will work, and I also expect that a company will fix something they sell me if it’s broken when I buy it.

I then called Costco, and they have a 90 day return policy. So bite me Lenovo, your resellers back your stupid products better than you do yourself. Since Costco had done so right by me through this whole process and was going to take back this Lenogo (see what I did there?) I immediately ordered a new HP dv7t from I figure for the $179 I would have paid Lenovo I might as well get a nicer computer instead of adding 25% to the cost of this piece of junk.

Also since I still have a nice window to return the Lenovo to Costco, this way I can get the new computer, transfer all my crap to it from the Lenovo, and then return the Lenovo with plenty of time to spare.

Bottom line here is I’m still quite flabbergasted that Lenovo would sell a computer with their pre-install of Windows, their drivers, etc. and not support a damn bit of it without making people pay extra. I guess they’re just playing the odds but here’s another thought Lenovo: if you seriously only have to help 30% of the people who buy your products with the software that you put on the computers when you ship them, is that really a big deal? You’d rather have people like myself stop buying your products altogether?

Here’s hoping the HP situation turns out much better.

Solution for Windows 7 “The Computer Has Rebooted From a Bugcheck” Error

I’m not proud of it but over Christmas I bought a Lenovo G770 laptop running Windows 7 (Home Premium 64-bit specifically). It’s a really nice machine for the money, particularly given the deal I got on it through Costco.

The main reason for me getting a Windows machine–OK, call it an excuse if you will–is because I needed a machine to run Pro Tools and Adobe Audition for both voiceover work as well as some volunteer production work I hope to be doing for KBCS before too long. Yes, unfortunately when you get into needing to run specific software like that there’s some things that unfortunately don’t run on Linux. This also opens the door to doing some live shows on CodeBass this year using SAM Broadcaster or maybe just take some of the load off Vicky by uploading my own damn show for a change!

Anyway, lately the machine’s been shutting down when I’m not looking, so I took the time to dig into the Event Viewer today and saw the error “The computer has rebooted from a bugcheck” along with the location of a memory dump file. Also occasionally when the screen shuts off I’ll hear the fan go nuts and it won’t respond to keyboard or mouse input, requiring a hard reboot to get it to come back.

I was concerned maybe it’s a hardware issue of some sort but I found a solution that seems to be working thus far, though the real test will be if it makes it through the night tonight without dying. I found a lot of posts about this that were unrelated to anything that would be happening on my machine (many of which basically said “uninstall Zone Alarm” which I don’t have installed), but one I came across sounded plausible since the error seems to occur when it’s doing something related to power saving.

This isn’t the exact error I was getting but what’s described here has thus far done the trick since it tends to happen at least once during the day as well:

  1. Run a command prompt as administrator
  2. Type “powercfg -h on” without the quotes and hit enter

I then rebooted just to be safe (it’s Windows, after all).

What that does is manually re-enable hibernate mode, and apparently even if you don’t use it (which I don’t) it fixes the issue.

As I said the real test will be if it makes it through the night without dying since it always happens overnight, but I’m cautiously optimistic.

Windows 7 and problems like this sure make me appreciate Linux.

Pro Tools LE 8.0.5 and Buffer Underrun Error (-6085) on Windows 7

Quick tip for an error that seems to plague a lot of Pro Tools users. I recently installed Pro Tools 8.0.5 on Windows 7 Home Premium 64-bit and was constantly getting the dreaded “H/W Buffer Underrun” error (-6085). I only ever record a voiceover track in Pro Tools (occasionally with a music bed in another track), but even with a small session such as that it would happen consistently, sometimes after only a few seconds, but at best I’d get 5 minutes of recording time before it would throw the error. It would also throw the error when bouncing a mix to MP3, and the length of the bounce didn’t seem to matter much.
To try and fix this I tried (almost) everything listed in Avid’s Windows 7 Optimization Guide to no avail, and also scoured the far reaches of the interwebs looking for a solution with no luck, so I finally ponied up the $39 for a support ticket and gave them a call. (As an aside, Avid’s support is top-notch. I was on hold for a while but once it was my turn I got exceptionally good assistance.)
For reference the machine I’m using is a Lenovo G770, which has an Intel Core i5 (2.4 GHz), 8GB of RAM, and a 5400 RPM (yes, slow) drive. I also have a 1TB USB 3.0 USB-powered Western Digital hard drive attached to this machine, but regardless of if I recorded to the main drive (the one with Windows and Pro Tools on it) or the external drive the error would occur. At first I was a bit worried about the hard drive speed but Avid said it should be OK, but they did recommend that even if you use a USB drive it’s better to record to an external drive. The other tidbit the support tech shared is that solid-state drives aren’t yet recommended for Pro Tools recording.
After the support tech ran me through most of the things I’d already tried, had me delete some preferences files, and then gave me some other settings to try, I was initially able to get a 10 minute stretch recorded without any problems so I optimistically tried to record some stuff for real, but after only about two and a half minutes the error occurred again.
As what I thought was a last ditch effort I tried the one thing I hadn’t yet tried since it seemed like a stretch: I disabled both my wired and wireless network cards. That, in combination with reducing the number of CPUs from 4 to 2 and setting the utilization to 90%, seemed to do the trick. Ultimately it may have only been the networking cards that were causing the problem but I violated a major rule of troubleshooting and changed two things at once, and now that it seems to be working I’ll probably just stick with these settings.
If you search for the -6085 error in your favorite search engine you’ll get tons of suggestions and unfortunately you may just have to experiment, but in my case once I disabled the network cards I recorded for 20 minutes without a hiccup which was quadruple what I’d been able to do before.
The Avid support technician did tell me that in Pro Tools 10 they leverage RAM more in the playback engine instead of streaming to disk so heavily, so if all else fails you may want to upgrade. I personally didn’t want to do that because I really don’t need anything that Pro Tools LE 8.0.5 doesn’t do so kudos to Avid for still supporting it, and supporting it so well.

Take this GUI and shove it | Networking – InfoWorld

[A GUI] makes just about everything harder by trying to make a few things easier, and for many like me, that’s a nonstarter.

This article sums up my opinion on GUIs perfectly, particularly when he discusses configuring settings on multiple servers. I can’t tell you how many unnecessary hours I’ve lost having to click around on a Windows server GUI when with Linux I could have copied config files from server to server and be done with it.

Essential Configuration Settings for Apache on Windows

This came up a couple of times on mailing lists recently, and since it’s something I sometimes forget to do when I set up new Windows servers with Apache, I figured I’d document it here.

If you’re running into stability problems with Apache on Windows and can’t switch to Linux, doing the following seems to help quite a bit.

First, find these lines in your httpd.conf file and uncomment them:
EnableMMAP off
EnableSendfile off

Then right below those lines, add this line:

Particularly if you’re seeing errors along the lines of “The specified network name is no longer available. : winnt_accept: Asynchronous AcceptEx failed” or “The semaphore timeout period has expired. : winnt_accept: Asynchronous AcceptEx failed” that last line should eliminate those errors.

If you’re interested in learning more about what’s behind these errors, there’s a nice post about it on the “My Digital Life” blog.