Review: Churrasco: Grilling the Brazilian Way

Churrasco: Grilling the Brazilian WayChurrasco: Grilling the Brazilian Way by Evandro Caregnato
My rating: 3 of 5 stars

The book starts off with a biography of the author, one of the founders of the Texas de Brazil restaurant chain. It then gives a brief history of where Churrasco came from in Brazil. After a primer on the tools and cuts of beef they get to the recipes. Interestingly, there are a decent amount of non-grilling recipes in here.

Overall, I found the background info to be a lot of fun to read. The recipes are not for the beginner. Unlike America’s Test Kitchen or Milk Street, the recipes are not as precise and definitely assume a certain level of knowledge. It’s also up to you to figure out how to adapt the recipes to your grill if you don’t build a gaucho grill. I’ve marked some off in my dokuwiki instance to make when the weather warms. I don’t mind BBQing or smoking in the winter, but grilling is a real pain.

View all my reviews

Review: Then Will The Great Ocean Wash Deep Above

Then Will The Great Ocean Wash Deep AboveThen Will The Great Ocean Wash Deep Above by Ian Sales
My rating: 1 of 5 stars

I don’t usually say this because I can understand people having different opinions about fiction, but I’m baffled by the higher scores on this book. The first two in this quartet had a conventional plot; even if the stories were mostly about the journey with just a little twist tacked onto the end. But on this one I didn’t even understand how the two stories fit together. The book provides a history less at the end so we understand in which way Mr. Sales different from our timeline, but I almost feel the fact that this one hewed so close to reality that he had to do that was a failure compared to the other two books. Oh well, we’ll see what happens with the fourth one.

View all my reviews

Review: White Sand, Volume 2 (White Sand, #2)

White Sand, Volume 2 (White Sand, #2)White Sand, Volume 2 by Brandon Sanderson
My rating: 3 of 5 stars

As per usual, the second volume in a trilogy keeps setting things up without any resolution. The same applies here. That said, I do like the forward momentum in Kenton and Kris’ respective stories. While it is nice to see an illustrated version of Mr. Sanderson’s work, I can’t help wishing this were just a prose novel. There’s so much detail that I know we’re not getting because comics are a “show, don’t tell” medium. Still, the story’s kind of neat and it’s fun to see a new magic system. Interestingly, Kenton helps someone named Trell and I could have sworn that’s the name we’ve heard about in Mistborn Era 2? Clearly this story takes place before Mistborn Era 2 because we know that Kris has been exiled from her planet and we know that she’s on Scadrial around the time of Mistborn Era 1 books 2 and 3. So maybe this Trell ends up on Scadrial somehow? Or maybe (and this is rare for Sanderson) it’s just reuse of a name that has nothing to do with it.

Finally, I haven’t really been too much of a fan of the art style (which is similar to the art style in Dynamite’s A Song of Ice and Fire) so I was happy with the change for the final issue in this collection to a more standard comics style. It was easier to see what was going on (the previous style had lots of surplus lines everywhere) and easier to see the expressions on everyone’s faces. (Also to tell them apart)

View all my reviews

Review: The Eye With Which The Universe Beholds Itself

The Eye With Which The Universe Beholds ItselfThe Eye With Which The Universe Beholds Itself by Ian Sales
My rating: 3 of 5 stars

This is definitely one of those stories that’s more about the journey than the destination. I was wondering the entire time what the point of the story was going to be. It literally took place en route somewhere and in flashbacks. Overall an OK story with a heck of a twist at the end. Felt very pulp science fiction. It appears the four short stories (of which this is the second) don’t have anything in common other than the first story introduced the idea of alternate timelines and so each is in a different NASA timeline. (Which actually reminds me somewhat of Hickman’s The Manhattan Projects, Vol. 1: Science. Bad.)

So read or listen if you’re a journey type of reader, but if you’re the destination type this might not be your bag.

View all my reviews

Review: The South’s Best Butts: Pitmaster Secrets for Southern Barbecue Perfection

The South's Best Butts: Pitmaster Secrets for Southern Barbecue PerfectionThe South’s Best Butts: Pitmaster Secrets for Southern Barbecue Perfection by Matt Moore
My rating: 3 of 5 stars

I gave this book a three, but it’s really more of a 3.5 rating. The stories of all the pitmasters that Matt Moore interviews are a 4. They really bring to bear the diverse people who work the pits to make BBQ throughout the south. The recipes are a 3 as compared to the recipes Steve Raichlen, America’s Test Kitchen, or Meathead provide.

I did at quite a few to my to-make list and so I’m excited to try some new ways of cooking pork shoulder (it is called South’s Best Butts) and also a few other recipes.

View all my reviews

Review: Python 3 Object-Oriented Programming: Build robust and maintainable software with object-oriented design patterns in Python 3.8, 3rd Edition

Python 3 Object-Oriented Programming: Build robust and maintainable software with object-oriented design patterns in Python 3.8, 3rd EditionPython 3 Object-Oriented Programming: Build robust and maintainable software with object-oriented design patterns in Python 3.8, 3rd Edition by Dusty Phillips
My rating: 4 of 5 stars

I’ve rarely done object-oriented programming in Pytnon and haven’t done any serious OOP since undergrad, nearly 20 years ago (and in Java). i found this book to be very well written and a good way to become an expert in the Python way of doing OOP. I discovered new and more efficient ways to write functions I’ve been writing that should allow me to have more easily maintainable code.

What I like best about the way the book is written is that it’s not written to be a textbook so the chapters don’t end with silly exercises. Instead, each chapter ends first with a case study that explores the principles from the chapter and then a series of thought experiments the reader can perform. Better than all that – and something missing from lots of books and tutorials I’ve read in the past – the author always points out where her example code is not the best way to do something, but is being written this way to demonstrate the chapter’s topics. It prevents the novice programmer from building off this example and thinking it’s the best way to write the code.

I’d definitely recommend it, but make sure you already know how to program in Python because it doesn’t spend the first couple chapters introducing the basics.

View all my reviews

Annapolis Running Classic – my first 10k Race

As I’ve mentioned a few times, my first running race was the 5k at the 2019 Red Hat Summit. I caught the bug and started thinking about running longer races. Since a lot of races use official USATF-certified times to qualify or to get a corral placement, I wanted to find a race that was USATF-certified. So in July I signed up for the 9th Annual Annapolis Running Classic. I started training and working my Saturday runs up towards a 10k distance. Today, it finally all paid off.

I woke up at 0440 today (my alarm had been set to 0455), did my morning routine, got dressed and headed to Annapolis. I arrived at 0538 to a very windy, cold (around 33F) Navy Stadium to get my bib. (While I’d asked for it to be mailed, it never arrived – but credit to the race organizers – they had contingencies for that and within less than 5 minutes I had a new bib number and was ready to go) Then, like anything else involving lots of people, it was time to wait until it was time to line up at the starting line at 0645.

Huddling around the propane heaters, I made conversation with some of the other folks at the race. One guy was on his 130th half marathon. Another one started 8 years ago when his son challenged him upon completing graduation. The talk turned to running regimens until it was time to line up. I showed up a little early in hopes of getting at the front of the line as I did in Boston, and I was rewarded once again with a spot at the front of the line.

People gathering at the starting line

When the organizers gave us a little pep talk, I learned that the youngest participant was 9 years old while the oldest was 77. I don’t think anyone could have convinced me to run 6.2 miles when I was 9. While the sun had risen, the temperature was still hovering around freezing and so I tried to move around a lot without tiring myself out. Eventually I couldn’t feel my toes anymore; a situation that was not rectified until somewhere around the 4 mile mark.

In the end, I ran exactly at the speed I expected to. When one of my employees, a very active runner, asked what I thought my time would be – I guessed 45-50 minutes. That’s about the time I’ve been training at on Saturdays. My official finish time was 47 minutes 15 seconds. My Garmin tells me I ran a 7:30 minute per mile pace with an average heart rate of 138 bpm. If I’d been more familiar with the course, it’s possible I could have pushed myself maybe 1-2 minutes faster because in my indecisive moments, I slowed a bit. (That would have actually pushed me to third place in my age group!)

So…..tired…..

So how did I do against others? Surprisingly well! I’d told my employee that I expected to come in somewhere around half because this was a real race, not a bunch of Linux geeks as in Boston.

My results at the Annapolis Running Classic 2019

For those who use screen readers or can’t see the image for some reason, that’s 41 out of 1157 for the 10k, 32 out of 428 for men, and 4 out of 67 in my age group. That just blew my mind! Also, I think the gender mix is interesting. If there were 428 men, then there were 729 women! I wonder if other races are always so skewed? Here’s how I stacked up, timewise with the other men:

Me against others in the 36-39 group.

I was going to use this longer race as a determining factor in whether I went for longer races. Well, after how much fun this is, I’m going to keep going! So in a few weeks I’m going to apply for the lottery for the Cherry Blossom Festival 10 mile race. Wish me luck!

Review: Arcanum Unbounded: The Cosmere Collection

Arcanum Unbounded: The Cosmere CollectionArcanum Unbounded: The Cosmere Collection by Brandon Sanderson
My rating: 5 of 5 stars

The first book I started in 2019! I started reading it yesterday while working on photos (sometimes writing metadata to the files takes a little bit so I wanted to have some reading to do while waiting). That evolved into me just reading and forgetting about my photos and, therefore, finishing in one day. (Well, I had read a lot of the novellas earlier because I’d received them separately via the Sanderson humble bundle) Why? So many reasons.

First of all, it was so neat reading Kriss’ annotations about the various planets in the Cosmere, seeing how Sanderson intends to fit them together. Also it explained some of the magic behind various things that happened in other books that wasn’t made clear to us because the characters didn’t know.

But mostly it was because it was so awesome to be reading about Kelsier again in Mistborn: Secret History. I think because of when it was finally written (to accompany Bands of Mourning) it has the most Cosmere-connected story of any of the stories I’d read. I was able to identify Kriss when Kelsier found her and when she mentioned she was from Taldain, I took a detour back to White Sands Vol 1 to see who she was in that story. (Based on that story and what she mentions in this book about Taldain, White Sands definitely takes place early in the Cosmere timeline) Secret history also mentions The Beyond and in Shadows for Silence they call their god the God of the Great Beyond. Later Threnody and Shadows are explicitly mentioned. Also, if you’ve already read Stormlight 1-3 you’ll have a much greater appreciation of what’s happening to Kelsier in this story. But he’s just so much fun (was one of my favorite parts of Mistborn 1) and so it was great to see him again. Also, the way Preservation was acting reminds me a lot of the way Honor was acting in Stormlight.

When I got to the Threnody section and it mentioned Odium (along with what we learned in Stormlight) it was so exciting.

I’m sad Nalthis didn’t get an entry from Kriss, though!

PS: The Hoid v Kelsier face-off was so great

View all my reviews

Addendum to Dual Display KVM Post

Three years ago I wrote a post (along with a Youtube video) about how to set up a KVM VM with Dual Monitors (or even triple monitors). Since then there’s been a bit of a change. I loaded up remote viewer and, for some reason, I couldn’t add more monitors to my Linux KVM VM. Turns out what you have to do is look at the Video (QXL) section in virt-manager. Look at how many “heads” it has listed. For example:

This VM will only support one Display. I couldn’t figure out a way to change it in virt-manager. But I ran virsh edit VMNAME and looked for the following line:

<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>

Once I changed it to 2 heads (I did this with the VM off), I was able to put it on 2 displays.

Red Yoshi VM with Dual Displays

Review: What is Obscenity?: The Story of a Good For Nothing Artist and her Pussy

What is Obscenity?: The Story of a Good For Nothing Artist and her PussyWhat is Obscenity?: The Story of a Good For Nothing Artist and her Pussy by Rokudenashiko
My rating: 4 of 5 stars

I first heard about Ms. Rokudenashiko on the Daily Show years ago. A couple years ago I remembered her story and added the book to my wishlist. In 2018 I got it for Christmas. I had no idea the book was a manga, I thought it was just a regular prose book. It works so well as a manga, I’m glad the story was told that way.

Does the book answer what Obscenity is? No, not really. Instead it’s 2 manga plus an interview with a famous person about Ms. Rokudenashiko’s art. The first manga tells the story of her imprisonment from her crowdfunding project to 3D-scan her vagina and make it into a kayak. The second is a prequel that gets us to the point where the first one begins. The interview is the most philosophical part in terms of tackling obscenity.

Things I learned in this book:
– the Japanese work for pussy is manko
– just as in America (perhaps anywhere there is democracy?) there’s a tension in police work. Unlike a totalitarian system you can’t just randomly imprison people. You need reasons and there is pressure to have success – measured as convictions. This leads people in power (police, judges, politicians) to act in unethical ways in order to react to the pressures and expectations placed upon them.
– On the plus side drugs and rape are almost non-existent in Japanese jails
– On the minus side, the rules there are draconian – you can get in trouble for sighing the wrong way. Also, (I don’t know if it’s like this in America) but they limit your amount of showers and that SUCKS!
– despite being the country that gave us hentai manga and anime , they are very repressed about vaginas in Japan

Also, I guess it’s universal in modern society for us to be unfair to female-bodied people? And that sucks.

Overall, this is a cutely told story about an artist dealing with incarceration and trying to understand why her society is the way it is. I recommend it if you’re not too uncomfortable reading the word pussy….a lot. (Both in English and Japanese)

View all my reviews

Git gets interesting

This used to look pretty regular. Just two parallel lines with the devel branch connecting into the master branch here and there. But then I merged master into devel because I added issue templates on the github website directly into master. Things got….interesting….

Here’s the before (but a few weeks ago):

git before merging master to devel

Here’s what it looks like now:

git after merging master into devel

Attempting a podman play on another VM

The podman saga continues. The podman equivalent of a docker-compose.yml can be created from a pod with the following command:

podman generate kube (name of pod) > (filename).yaml

So I did that with the pod that I’d created with an SELinux context. Now it was time to try it on another Fedora 31 VM to see if it would work. To be on the safe side, I started off creating the phpIPAM folder, chowning it to nobody and chmoding it to 777.

Then I ran:

# podman play kube phpIPAM-withSELinux.yaml

That triggered it to grab the images from Docker Hub. As per usual, the CPU spiked like crazy as it did Podman things. Not sure if this is due to the VM, Podman not having a daemon, something else…. But just something to note. At the end it printed out:

Pod:
 2ced947e3fc08af6d183ceee1b306f66dfb282d6451ec435b8cffa2bdbed0789
 Containers:
 a08eba25b78c8c36e3de9fe773cb23c7688748a4ed20116d4dfa2877d96e562e
 7c30526d35f9f7308c6582afba0fb4ad3bbeaddc40d85d87f251c2b9a9e5ced9

Interestingly, it doesn’t appear that I had to punch a hole through the firewall this time. Perhaps that was just a consequence of me not knowing exactly what was happening on my first attempts with Podman.

Unfortunately, the SELinux :Z attribute doesn’t appear to have come over. That makes sense as when I did a diff with the previous yaml I’d created, I didn’t see anything about that. First let me try the setsebool command.

# setsebool -P container_manage_cgroup true 

So now I want to try one of the other commands I found while trying to figure out the SELinux issue.

# chcon -Rt svirt_sandbox_file_t phpipam/

Then I rebooted the container. This does not appear to be enough to get it working. The SELinux page had some solutions it wanted me to type. So I try those.

After doing:

# ausearch -c 'chown' --raw | audit2allow -M my-chown # semodule -X 300 -i my-chown.pp
# semodule -i my-chown.pp

It appears to actually run the phpIPAM install. And I got to a login page!

I think I’m ready to start converting all my docker-compose files to podman play yaml files and start migrating things on my main server.

SELinux and Podman

Last time I messed around with Podman, I finally got things working and had what I think was a pretty good understanding of how to go forward. But in order to get things working, I’d had to turn off SELinux. Now it was time to see what I had to do to make Podman work with SELinux. I’ve got some ideas based on some Googling and might also need to try a program called udica to create the right contexts.

First of all, when I rebooted the VM, I noticed that the pod was stopped. So eventually I’ll need to figure out how to use systemd to bring it up on boot. I noted that SELinux was on after reboot. I wanted to first see if maybe setting things up with SELinux off and then turning it on would lead to a working situation. (Also, I was learning a lot when setting things up before, maybe I never needed to turn it off) I didn’t see any SELinux complaints. So I tried to load the page. SELinux was blocking MySQL from writing to the directory (and, apparently, reading) and so the site loaded up brand new as if I’d never configured the database.

I stopped the pod again. Then I tried this command first:

# setsebool -P container_manage_cgroup true 

The computer did its thing. I started the pod again. The same issue occurred. Both the documentation I’d consulted and someone on reddit had mentioned using the “:Z” option on the mount to get SELinux to be OK with it. As far as I know, I can’t change it on the container that’s already a part of the pod. Instead, I need to remove the container and create a new one from the image with the :Z option on the mount. So I tried that. After removing:

# podman run -dt --pod phpIPAM --name ipamsql -e MYSQL_ROOT_PASSWORD=my-secret-pw -v /root/phpipam:/var/lib/mysql:Z mysql:5.6

HURRAY! It loaded the site, reading the directory!

phpIPAM running on Podman with SELinux

And there weren’t any complaints from SELinux in the logs!