Programming Tools Q12020

I decided to document the tools I’m using for development since the various programming subreddits I frequent always have someone asking what tools they should be using.

IDEs/Editors

Linux

As I wrote in September, I’ve moved to using KDevelop for my larger projects.

KDevelop

Its built-in Python parser (working with flake8) has helped me find a lot of issues before getting to the stage of running flake8. The GUI for pushing commits to git has been very helpful in helping remind me what has changed and even (sometimes) noticing something I forgot to add to git. Its project-wide search has been invaluable when refactoring or renaming functions/classes. When it comes to large, complex programs, it’s hard to beat KDevelop when using KDE. That said, it’s only recently that the developers have started focusing away from being only a C++ editor and as you’ll see at the end of this blog post, for my Python workflow, I might be switching away.

I am still using Kate for smaller projects.

Kate

It’s nice and light-weight and it has pretty good syntax highlighting. Over the next few development cycles they’ll be implementing more and more LSPs (language parsers) that might give VS Code a run for its money. That said, for how great the debugging capabilities are, I might even move my smaller Python projects to PyCharm.

Windows

On Windows I’ve only been working on Unity games, so the complexity there lends itself to Visual Studio (the KDevelop of Windows):

My favorite feature here (and, as far as I can tell, something not in KDevelop – but IS in PyCharm) is the ability to highlight functions and create stubs or do some auto-refactoring. For example, let’s say for a Unity game I’m trying to think a bit before I code, so I start adding function calls into the Update function. The functions don’t exist yet – I’m just trying to figure out what to code based on what I’d call. I can then highlight each of those and right click and by selecting the right command, create stubs for each of those functions. I’ve yet to use any of the git features of Visual Studio and there’s probably tons I haven’t explored yet since I’m only using it for Unity development.

Git

Git GUIs

Windows

When I first started using Git on Windows, it was from watching GameDev.Tv’s Git for Unity devs course. The recommended using SourceTree:

It worked alright. My biggest gripe was that it wasn’t always as quick on auto-refreshing as it could be. The interface is OK. Not horrible, not amazing.

But for the past few months, I’ve switched to Git Kraken:

Git Kraken

If you compare both windows, it’s MOSTLY the same. Git Kraken just has a more modern looking GUI. But I like Git Kraken a bit more as it’s more responsive and it does have a lot of great features when first creating a repo, like importing a .gitignore file based on the type of project you’re working on. It can also integrate with Github from the beginning with a better user interface than SourceTree has. So far I haven’t had any issues with the free version, but if you’re a dev on a huge project, using it for work, or some other thing – you may need to buy in the professional version, which might make it a harder choice. For me, it’s currently the best (and best-looking) git GUI on Windows.

Linux

I’ve been using QGit for a long while now.

QGit

As I wrote a few days ago, GitQlient 1.0 was released and I’ve been using that.

GitQlient

GitQlient surfaces all the information I need up front, in a clear manner. It looks nice and clean. And it has some really awesome features related to blame and diff. To be perfectly honest, on Linux (as opposed to Windows) having a git GUI is MUCH MUCH less important. Especially with the visual git features to KDevelop, there are a lot of features I don’t use in GitQlient – like making commits. Mostly I use it to get very quick and visual confirmations of what’s going on with my various branches, tags, etc.

Git Websites

While I love self-hosting because it gives me perfect control over the situation and I don’t have to worry about websites disappearing (looking at you, Google!), I just don’t see the advantage to self-hosting when it comes to a git project for which I’d like to have potential contributors or allow for user bug reports. Who wants to make another account on my personal GitLab or Gitea site? So for nearly all of my projects, I use Github.

That said, I do have a couple projects that I’m self-hosting for various reasons. For those, I use Gitea:

Gitea

I found Gitea to be infinitely easier to set up for self-hosting than GitLab or Pagure. It has ALMOST all the same features as Github and a great community behind it. *IF* you want to self-host a git repo, I definitely recommend Gitea.

Continuous Integration

I’d played with Jenkins for a bit, but I found it overly complex and it had a really crusty interface. While I use Github CI for my Github projects (why not?). For my Gitea projects I use Drone CI:

Drone CI

It may or may not have everything you need compared to Travis CI or other options, but for my needs it’s perfect. Just create the YAML file and it does every step based on Docker containers.

Misc

Ever since Konsole got the ability to intelligently split the screen, it became a LOT more useful when programming.

Konsole with lots of tabs and split screening

Coupled with the ability to open lots of tabs (see the bottom of that screenshot), it’s very useful without having to have tons of windows open. In the screenshot above, I’ve typically got the left side for running the program, the top right for git commands, and the bottom right for compiling the Sphinx docs.

Going Forward

That’s where I’m at right now. Looking forward, I can see a couple potential changes to the programing programs I’m using:

As you saw with yesterday’s post, I’ll be investigating using PyCharm on Linux. It looks like it has a lot of AWESOME features that will help my code improve. That might sound like an exaggeration, but at my current level (more than beginner and less than super-hacker), each bit of new learning I’ve applied to my Python coding has made my code better – unit tests are helping me discover when my refactoring is breaking things, flake8/pydocstyle are helping me make the code easier to read when I come back to it, Sphinx is helping me create documentation that will help contributors as well as make it easy for me to come back to the code. Based on what I saw from using PyCharm for just a few minutes, I think it’s potentially going to help me discover some non-Pythonic things I’m doing that will make my code more efficient and better to read/understand. (That said, I know better than to blindly follow the program’s suggestions)

I might take a look at using Docker/Podman for compiling code or creating AppImage, Flatpak, or RPM packages.

New Dishes I cooked in Feb 2020

Very low number of new dishes. Mostly because I was obsessed with programming and Gwent.

Both recipes were from America’s Test Kitchen. The pizza recipe was a challenge to be able to make a pizza that would be ready in an hour and not suffer too much from not having the pizza ferment for a few days. I thought it was alright. Despite liberally dusting the pizza peel, had a hard time getting the pizza off.

The quesadilla was a very different recipe than our usual. I think the verdict between Danielle and I was, “it’s different. It’s good. It’s not better than the one we usually make.” Still, I did learn some techniques for making four at once in the oven which should help no matter which style we make.

Hey, Pycharm, hey.

Back in September I wrote about moving to KDevelop for my larger Python projects and also staying with Kate for my smaller projects. I’ve REALLY been enjoying all the features as I work on more and more complex packages involving lots of files. But for a few episodes of Python Bytes now (and/or maybe Talk Python to Me – they share a host) they’ve been talking about how awesome it is to use an IDE that has a Python debugger built in. It may be that KDevelop has that ability (I’m pretty sure it does for C++), but I’m not sure. I am nearly certain that Pycharm does have a debugger built-in. A while ago I’d set up the Pycharm COPR repo on my laptop. I tried playing with it a little at the time, but I was coding on a very small project without a venv, so things didn’t work out well. (Pycharm is pretty opinionated about the way a Python project should work)

So in light of these recent mentions on the podcasts, I loaded up ELDonation Tracker, since that DOES use a virtual environment. I do have to say that I was pretty darned impressed. Here’s what it loaded up when I opened that folder:

PyCharm automatically loaded up my README.MD and rendered it

What impressed me most, was that it rendered my readme.md. Rather than guessing at what it will look like on Github based on this view in KDevelop, I’ll know exactly what it’ll look like:

README.MD in KDevelop

To be fair, KDevelop was created for hacking on C++ for KDE back before Github was even a thing. But it’s still a neat feature. Another thing that could potentially save me some time vs running Sphinx’s make html and then reloading my local page, is that PyCharm also renders rst (Python’s official markdown language):

PyCharm also renders rst files! I can see why they charge for the professional version!

That could save me a bit of time and it could save a dev team LOTS of man-hours. It was even able to run my unit tests from within PyCharm. Pretty neat vs having to run an entire PyTest run if I just need to check one function or check one test that I’m designing.

PyCharm performing unit tests within PyCharm

As for its Python Parser. It was even more involved than KDevelop – it seems to be running MyPy and PEP-8 automatically. It also offered to run coverage on my file. I couldn’t get the pop-up to show up in the screenshot, but below it was telling me on line 84 that there’s a different way I could do that instantiation. It was also a bit aggressive on some other things that I would probably ignore – like how it has Amnt as a mispelling, but that dictionary key becomes a filename for text output and I’d rather not have it be ridiculously long.

PyCharm evaluating extralifedonations.py

I’d been planning for a few weeks now to write up a blog post documenting all the programs I’m using while programming – IDEs, Editors, Git GUIs, etc. I think I’m going to have to install it on my main dev box (one point against PyCharm is that it can tend to be a bit heavy to run on my laptop) and give it a test run to see if I like it more than KDevelop. Also, Kate blog posts have been pointing to Kate getting better parsers for its languages (not sure if they’ll end up sharing with KDevelop or not) as well as maybe also getting some built-in Git awarements to match their competition in VSCode. So I’m not sure if there’ll end up being ONE IDE/EDITOR TO RULE THEM ALL or not. I also want to try and find some time to explore some Vim plugins, etc for those times when I’m on the commandline or don’t want to fire up a GUI just to do a really quick edit.

Scarlett Portraits

It was time to take some portrait shots of Scarlett. As I was getting set up, I decided that I wanted to try something new; something I’d struggled with before, but never been able to succeed at – a flash highlight of a black background. I’d seen Gavin Hooey use the technique to great success on his Adorama TV show on Youtube. But somehow I’d just never been able to get it to work well. So I decided to try and mess around with the setup before the photo shoot. Eventually, I found something that worked well for me. I think, reviewing the photos for the fifth time now, that as I have it set up, it works best for the closeup shots. For the 3/4 shots, it probably should have been either dropped a little lower or maybe pulled away from the background a bit more to spread it out a bit more. The setup looked like this:

In the past, I’d tried this with “barn doors” and small snoots on the 580EX. While that worked for others with their lighting setups, it was never what I needed for mine to work well. This time I happened to use the large white gobo from a kit I got about 10 years ago and I happened to get the perfect distance from the background (VERY far forward) to get it to work just right.

Here’s what I think the best portrait from that session looks like; best in the sense of making best use of my technique – not necessarily the best photo of Scarlett. (It’s now one of my computer backgrounds)

Scarlett portrait with the background technique.

Here are the 3/4 portraits I took:

Like I said, I like them. They came out well, but I would need to do things slightly differently to get the same feel as with the closeup.

As usual, we also took advantage to have some sibling portraits and Stella really wanted to join in. Here are the best of those:

Overall, I’m happy to get another artistic documentation of the girls getting older as well as coming closer to mastering a technique that had eluded me until now. (Extra awesome to me since I had been ignoring photography in favor of programming and video games recently)

EL Donation Tracker (v4.1.1)

It’s been 5 months since I last wrote about ELDonation Tracker, my software for tracking Extra Life donations for use during a livestream or VOD. I’ve been quite busy since then! First, I used Github pages to make a site for the software to make it a little easier for those who are just users and don’t intend to do any development. They don’t have to navigate Github to try and figure out how to get the program and use it. Then, by reading Serious Python I learned about Sphinx, which can automatically create documentation out of your docstrings. I also learned that all these “readthedocs” pages I’d seen springing up with all the projects I care about were leveraging the fact that readthedocs.io will use your Sphinx documentation to create hosted documentation. So now I have some great documentation for my software. Finally, it’s my SECOND bit of software to go up on PyPi:

ELDonation Tracker on PyPi

Here’s the latest instructional video showing off some of the new features:

Podcasts I’m Listening to In 2020

I’ve both added and dropped some podcasts since last time around. Where I’m listing the same podcast as last year I may use the same description as in the past with slight (or no) variation.

Public Radio

Radiolab – Heard about them because sometimes their stories are used on This American Life. Radiolab is a lot like TAL except with a much bigger focus on sound effects. It is, in a way, the descendant of the old radio shows of the 30s and 40s. (Approx 30-45 min)

Marketplace – This is a really good economics show.  They talk about news that happened that day as well as stories that have been pre-prepared.  (Approx 30 min long)

Codebreaker: A tech podcast. Season 1 asked the question “Is it Evil?” of various technologies. still on my feed, but hasn’t release a new episode in 38 months.

On the Media –  Although not always perfect and although it leans a little more left than moderate, On the Media is a good podcast about media issues.  Examples include: truth in advertising, misleading news stories on the cable networks, debunking PR-speak from the White House, and other media literacy items.  I tend to enjoy it nearly all the time and it’s a good balance to news on both sides of the spectrum, calling out CNN as often as Fox News. (Approx 1 hour long)

Fresh Air – Fresh Air is one of NPR’s most famous shows. It tends to have a heavy focus on cultural topics (books, movies, etc).  Terry Gross has been hosting Fresh Air for decades and is a master at interviewing her guests.  Every once in a while there is a guest host or the interview is conducted by a specialist in that industry.  (Approx 1 hour)

Freakonomics – Essentially an audio, episodic version of the eponymous book. If you enjoyed the insights of the book, you’ll really enjoy this podcast. (Approx 30 min)

The Infinite Monkey Cage – a BBC radio show about science. A panel of scientists (and one media star who is interested in science) talk about a topic. The only bummer is that the shows are quite infrequent. Something like 4 weekly episodes per quarter (Approx 30 min)

History

Dan Carlin’s Hardcore History – if you’re a history buff you really need to be listening to this podcast. Dan’s well-researched podcast presents bits of history you never heard of in ways you never thought of it. He does a great job of making ancient societies relate-able. The only bad thing is that there is a long gap between episodes due to the research involved. (Varies. Approx 1.5 – 4 hrs)

Hardcore History Addendum – Meant to bridge the gap between Hardcore History episodes, it focuses on interviews and smaller topics.

The Dollop – A very funny and very profane look at American history. The premise: The host tells a story of American history to the other guy, who doesn’t know ahead of time what the story’s about. It’s a premise that leads to some great reactions from the person not in the know (usually Gareth, but sometimes they do a Reverse Dollop). Also, listening to this podcast is a great reminder that the past is full of some really messed up people and situations.

History Unplugged – I found this podcast when I was looking for Dan Carlin’s Hardcore History Addendum. I enjoy his question and answer episodes. (20 minutes)

Tides of History – I liken this podcast to the other side of Hardcore History. Dan Carlin tends to focus on the big movers and shakers in history. So far, in Tides of History the host has focused a lot on the experience of the common man (or woman) in the time period he’s exploring. Very entertaining and, unlike Hardcore History, it’s not on a George RR Martin update pace. (Usually 20-40 minutes)

The History Chicks – Focused on women’s history, they usually tell the story of an important figure from birth to death. I really enjoy the style, especially since, like The Dollop it involves more than one person so they can play off each other, even if it’s not as comedic as the other show.

Comedy

WTF with Marc Maron – This is a pretty solid podcast which mostly consists of Marc Maron interviewing comedians.  As with any interview-based show, the episodes are hit or miss, although more often than not they are really good.  Occasionally he does a live show in which he’s still interviewing people, but with 4-6 per episode it’s much less in-depth.  And, since it has an audience, the guest is performing more than being open.  The only irritating thing is that Marc starts off each episode with a rant/listener email reading.  Most of the time this is neither interesting nor funny.  I wish he’d do his rant at the end of the episode so that those of us who just want to hear a great interview with a comedian we like can easily skip the monologue.  (Approx 1.5 hours long)

Conan o’Brien Needs a Friend – It’s kind of like WTF, but much, much jokier. Most of the time, Conan has a really great conversation with a comedian that just goes off in random directions. Every once in a while it’s more like a commercial for whatever the comedian has recently released. (Approx. 1 hour long)

Science Fiction Short Stories

Clarkesworld Magazine

Escape Pod

There isn’t much to differentiate these two podcasts.  They both feature great selections of short stories.  I added them to my podcatcher to get a dose of fiction among the more non-fiction podcasts I usually listen to.  Also, there’s something great about short-form fiction where you have to build the world AND tell the story in a very concise way.  The main difference between the two podcasts is that Clarkesworld has pretty much just one narrator who’s quite incredible.  Escape Pod tends to have a group of narrators.  Most of them are great – every once in a while there’s a less than stellar one.  Clarkesworld tends to end the story with the narrator’s interpretation and Escape Pod tends to end with reader comments from a few episodes ago. (varies. 15 min to 45 min)

Movies

How Did This Get Made – Paul Scheer, June Diane Raphael and Jason Mantzoukas (plus the occasional guest) watch movies from the last few decades that will probably be in the future’s version of Mystery Science Theatre 3000. The movies are often incredibly baffling and full of strange plot points. One of the best parts of the show is “Second Opinions” where Paul goes to Amazon.com to get 5 Star ratings for the movie they just spent about an hour lambasting. Every other episode is a mini episode that previews the next show, has a section called “Corrections and Omissions”, and Qs and As. The first two sections are great. The last one varies depending on the quality of the questions and answers. It can be pretty funny, but most times I just skip it. (Approx 1 hr)

Unspooled – Paul Scheer’s serious movie podcast. He teams up with Amy Nicholson to talk about movies from the AFI Top 100 best American movies list. It’s pretty neat to hear them really dissect these movies and they usually have an interview with someone involved in the movie. (Approx 1.5 hours long)

Zoom – Amy Nicholson goes in depth into various movie topics and how they fit into our culture. Last season’s greatest episode was about the history of zombies throughout human history and film. I don’t even like Zombie movies and I found it absolutely fascinating. (Approx 30 minutes)

Twinsies – Andy Wood from Probably Science and another guy who might just mention that he has a film degree from Arizona State talk about two movies that came out around the same time and are almost the same movie – at least superficially. For example Antz v A Bug’s Life or The Illusionist v The Prestige. Good for film/pop culture nerds. (approximately 45 minutes)

News

Political Gabfest (from Slate) – This has taken the role that Talk of the Nation’s Wednesday slot left vacant when the show went off the air. They talk about politics (usually swinging heavily left or sometimes libertarian while ToTN was more neutral) and I get a dose of what everyone’s talking about in politics. (Approximatly 1 hour)

Common Sense with Dan Carlin – If you like the attention Dan puts towards Hardcore History, then you’ll probably love this take on the news. Usually Dan takes one (max 2) topics from the news and by the time he’s done with it, I’ve seen 2-3 different points of view. Sometimes there’s a clearly right point of view (the sky is blue), but other times each side has valid points and neither one has the complete high ground. Dan is a complex creature, like many of us. On some topics he’s more likely to agree with Dems, other time Republicans, and sometimes neither. Other times he agrees with their Platonic Ideal Version, but not their RealPolitik version. Either way, I’m always overjoyed when it shows up – which is somewhere between biweekly and monthly. (Approximately 45 minutes) still on my feed, but it’s been 21 months since the last episode

FiveThirtyEight Elections – a great, wonky podcast from the guys that brought you the most accurate election predictions. Has continued beyond the elections due to the odd circumstances of the Trump administration.

What Trump can teach us about Con Law – Hosted by Roman Mars of 99% Invisible and Elizabeth Joh, a constitutional law professor, it explores issues of constitutional law around statements, executive orders, etc that Trump has made. Very informative and explains a lot about how certain things that affect other politicians don’t affect the present. (15 minutes)

Culture

Give Me Fictionnote: I’m still subscribed to this podcast, but it’s on hiatus. A pretty hilarious (to my sense of humor) super short story podcast. It’s recorded live (which often spices up comedy) and seems to skew Gen X/Millenial in its humor.  (Varies, but usually under 15 minutes)

Talkin’ Toons with Rob Paulsen – The great voice actor behind two Ninja Turtles, Pinky, Yakko, and many, many other cartoon characters interviews other voice actors. It’s like WTF,  but without the annoying self-reflection 10-15 minutes that I always skip on Maron’s podcast. If you enjoy voice acting nerdom or want a place to start, check this out. (Approximately 1 hour)

Boars, Gore, and Swords: A Game of Throne Podcast – two comedians (and sometimes some friends) discuss each episode of A Game of Thrones and each chapter of the books. While it’s primarily funny, it does sometimes lead me to some deeper insights into each episode. Since the show is over and there aren’t any more published books, they’ve branched out to include a lot of “What You Should Be Watching” episode where they cover different movies and TV shows. They’ve introduced me to a lot of shows that I’ve ended up really loving, like Counterpart.

The Allusionist – a podcast about words, where they come from, and how we use them (Approx 15-25 min)

Nancy – A WNYC podcast about LGBT culture. It’s fascinating for me to hear about a culture I’ve absolutely no experience with and the differences in the life experiences of the hosts and their guests. Also interesting having Kathy Tu as a co-host because the bits of LGBT culture I’ve seen before were from a white perspective and she provides an asian perspective on the LGBT experience. (15 minutes)

Imaginary Worlds – a look at what makes science fiction and fantasy so enjoyable whether as books, film, or music.

Decoder Ring – they take a look at a cultural mystery or meme and where it came from and how it’s affecting culture. Examples include: Truck Nutz, Sad Jennifer Aniston, The Incunabula Papers, and Clown Panic.

SciFi Diner Podcast – I discovered them when I went to Farpoint this year. They talk about SFF stuff. So far from the episodes I’ve heard, it’s mostly about SFF movies.

Spanish Aqui Presents – a Latinx improv group spends the first half of the show on a topic that’s front of mind to one of the members. Then they interview someone from the Latinx entertainment world, culminating in doing an improve sketch based on what they learned about that person in the interview.

Our Opinions Are Correct – Annalee Newitz (science journalist and science fiction author) and Charlie Jane Anders (science fiction author) discuss a topic from science fiction (eg a particular trope) and where it came from and how it applies to stories past and presesnt. Somewhat similar to Decoder Ring, but where that one is very journalistic, this one is more of a conversation between two people. (Approximately 30-40 minutes)

Science

You Are Not So Smart – the host, who wrote an eponymous book, tackles topics of self-delusion. Examples include placebos, alternative medicine, and conspiracy theories. (Approximately 45 min)

Probably Science – some comedians who used to work in the science and tech fields bring on other comedians (of various levels of scientific knowledge) to discuss pop science and where the articles might be misleading.

Star Talk Radio – Neil DeGrasse Tyson’s official podcast feed. Some episodes are a show hosted by him in which he either interviews a guest or answers listener questions. Others are Chuck Nice and another guy talking about the science of sports.

Misc

99% Invisible – Similar in scope to the NPR podcast Invisibilia, this one was there first. It explores the things that are in the background of life. Examples include architectural details we often miss or stories that tell how regions came to be. Production is similar in sonic greatness to RadioLab.  (Approx 15 min)

GoodMuslimBadMuslim – a window into what it’s like to be a Muslim in modern America.

Politically Reactive – note: I’m still subscribed to this podcast, but it’s on hiatus. W. Kamau Bell and Hari Kondabolu discuss politics with some jokes and some interviews with people mostly on the left, but sometimes on the right. They are respectful and always provide context to what’s being said.

More Perfect – Explores Supreme Court rulings and how they affect America.

Song Exploder – they pick a song and a member from that band explains how they put it together. They usually look at each layer of the track – vocals, drums, guitar, etc and talk about why each decision was made. Can range from interesting to revealing.

Business Wars – focuses on business rivalries like Netflix v Blockbuster, Nike v Adidas, or Marvel v DC. Usually 4-6 episodes per topic and a reasonably deep dive into the subjects.

My Brother, My Brother, and Me – “An Advice Show for the Modern Era”. The McElroy brothers come up with answers to Yahoo Questions and Listener Questions. Also a bunch of random recurring skits. My favorite is “Munch Squad” where they make fun of restaurant press releases. (Approximately 1 hour)

Get Rich Nick – Two guys named Nick try various schemes and gig jobs to see if any of them can allow you to get rick quickly. (Approx 1 hour)

Cautionary Tales – Similar to You Are Not So Smart in that we often learn the wrong lessons from things that happen in history. The host takes a few seemingly unrelated historical events and ties them together to see how we can use them all to learn the same lesson.

Computers

Command Line Heroes – A podcast produced by Red Hat that tackles different tech topics, organized around a seasonal topic. Season 2 was about programming languages and introduced me to the Python podcasts that I listen to. Season 3 is about the history of computer hardware. (Approximately 30 minutes)

Talk Python to Me – A podcast about the Python programming language in which the host interviews a Python programmer about their project. Some of the neat interviews have been about climate change and programming, open-source in academia, and Python packaging in 2020.

Python Bytes – A short Python news show in which the hosts talk about news and new modules (sometimes just new to them). I often learn quite a bit of bits of functionality I never knew about related to Python.

Cooking

Milk Street – a cooking podcast that goes along with Chris Kimball’s new enterpise, Milk Street. They interview a chef or two, have a question and answer section, and go over a recipe.(Approximately an hour)

Proof – a short podcast by the folks at America’s Test kitchen that looks at various food culture stories. Previous episodes include Fair Foods, Bowls, and Ketchup. (usually about 15-20 minutes)

Serious Eats – Ed Levine interviews a chef about their life and about food.

Review: Soleil (The Illumination Paradox, #3)

Soleil (The Illumination Paradox, #3)Soleil by Jacqueline Garlick
My rating: 1 of 5 stars

It is a real bummer for me to give this book 1 star. I really enjoyed the first book in the trilogy. The second book was fun. But this book… kind of just felt like perhaps this series should have been a duology instead of a trilogy. While the first third or so was a good bit of fan service, it could have maybe just been a post-script novella? The rest of the book was just full of the introduction of all sorts of new rules and technology to the way the world worked that I didn’t think made sense in the third book of a trilogy. On top of that, the last chunk – from when our main characters end up in a canyon until the end just didn’t make any god forsaken sense. (view spoiler)

This book might be great for you. And that’s OK. I don’t want to “yuck” anyone’s “yum”. But it did not work for me. This is why there was such a gap between updates towards the end. This is why I read more than one book at once. So if one isn’t motivating me, I’ve got others to still be excited about. Anyway, a real bummer because I believe Ms. Garlick had a blast creating this series and really seems to love the characters. I enjoyed interacting with her on twitter while reading the first book and going through all the fun twists and turns there. Anyway, I’m rambling…

View all my reviews

Review: Serious Python: Black-Belt Advice on Deployment, Scalability, Testing, and More

Serious Python: Black-Belt Advice on Deployment, Scalability, Testing, and MoreSerious Python: Black-Belt Advice on Deployment, Scalability, Testing, and More by Julien Danjou
My rating: 5 of 5 stars

This is an AWESOME book that has completely transformed the way I code in Python. That might sound like the opening to a parody review, but I’m being sincere. One of the best things about Python is that it has a low barrier to entry and it’s easy to get started programming. One of the worst things about Python is that it has a low barrier to entry and it’s easy to get started programming. I’ve been going through the past 15ish years with just a surface-level understanding of my favorite programming language.

On my biggest, most used (by others) Python program, I’ve gone from code to looks like this (https://github.com/djotaku/ELDonation…) to a package that’s published on PyPi (https://pypi.org/project/eldonationtr…) and auto-generated documentation(https://eldonationtracker.readthedocs…), pulling from my Python docstrings (https://eldonationtracker.readthedocs…) with even more ways I’m going to fix/optimize my code and make it more Pythonic. I think this is the best book I’ve read on Python programming since the Mark Pilgrim book that got me into Python that decade and a half ago.

Seriously, if you are self-taught on Python and want to go to the next level, you NEED to read this book.

View all my reviews

Review: Over the Wine-Dark Sea (Hellenic Traders, #1)

Over the Wine-Dark Sea (Hellenic Traders, #1)Over the Wine-Dark Sea by H.N. Turteltaub
My rating: 3 of 5 stars

This is the second time I’ve read this book, the first time being nearly 20 years ago when it first came out. A few key bits had stuck with me, like Menedemos’ womanizing and a battle at sea. But after 20 years, most of the details had faded, so it was almost like reading it anew.

As a history geek, I found it a lot of fun to read historical fiction that isn’t set in one of the traditional time periods like Victorian England or Napolean’s Reign. The two characters also make great foils for each other, impulsive Menedemos and his philosopher/wannabe-historian cousin Sostratos. While it’s obviously a work of fiction, it was neat to see what things are the same about humans no matter how far back you go (haggling, superstitions, balancing desire with prudence) while other things are so different (how they viewed meals, technology, gender relations).

Perhaps obviously, since the main characters are sea traders and the majority of the book takes place during the trading season, it’s structured almost as a series of episodes, each taking place in a new city. There isn’t a truly overarching plot and it’s both metaphorically and literally about the journey, not the destination(s). The biggest narrative momentum comes from Sostratos’ character growth, but even that is relatively minimal.

Overall, I think it’s a pretty fun read, particularly if you’re interested in ancient Greece.

View all my reviews

Review: Clarkesworld Magazine, Issue 134

Clarkesworld Magazine, Issue 134 (Clarkesworld Magazine, #134)Clarkesworld Magazine, Issue 134 by Neil Clarke
My rating: 3 of 5 stars

I wasn’t quite into this one as much as some other recent issues. Here are my reviews per story:

Prasetyo Plastics – Less of a traditional story and more of a meditation on unbridled capitalism that does not descend into a libertarian dystopia. Rather, it’s another that asks if we truly realize what we’re doing to this planet on a scale that we believe has never been attempted before.

Retrieval: Fantasy with some sci-fi elements. Kinda Ghostbusters in space.

Dead Heroes: A weird and very sad meditation on technology, the environment, and dementia metaphors.

Who won the battle of Arsia Mons: Told as a news story about a robot competition that quickly gets more and more complex. I really enjoyed both the story and the tone.

The Catalog of Virgins (translated): A weird retelling of the Bluebeard fairy tale that I found didn’t really make any sense (to me) and I didn’t really get it.

Second Person, Present Tense: A really neat story about the nature of consciousness revolving around a drug that removes some of the consciousness. I wonder if the author was inspired by the sleeping pill stuff that was going on in the early 2000s where folks would do all sorts of things without any memory of it (story originally published in 2005). I think it works really well and also touches lots of little interesting areas about life, the pressures put on us and the pressures we put on ourselves.

Martian Blood: An alternate universe where there were Martians on Mars somewhat similar to the Edgar Rice Bouroughs stories. A good story and written in an older pulp style.

Non Fiction:

Science Fiction and the Fall of the Evil Empire: I thought this was going to be about changing tropes, but it turned out to be a survey of SF movies in the USSR. Pretty neat seeing how the subversion worked.

Huskey Genes…Paul McAuley: Interview about new book.

Another Word: Listen UP!: A look at how audiobooks have been transformed by technology and a theory on why their sales continue to rise.

Editor’s Desk: The Voice in the Shadows: About overcoming both impostor symdrome and public speaking fears.

View all my reviews

Review: Starswept (Starswept, #1)

Starswept (Starswept, #1)Starswept by Mary Fan
My rating: 4 of 5 stars

I met Ms. Fan at Farpoint 2019 at her booth after seeing some of the panels she was on. We started talking about her books and I was intrigued and put this book and Stronger Than a Bronze Dragon on my To Read list. I also started following Ms. Fan on Twitter, and from getting to know her via tweet, she has put a lot of herself into this book: She went to college for music and has original compositions on her site: https://www.maryfan.com/songs.html. There are silks performances in the book and Ms. Fan is currently attending classes to get better at performing silk (Cirque de Soliel type stuff) routines.

As for the book itself, let me start off with non-spoilery stuff. First off, as you can see, I gave it 4 stars. So if you like YA science fiction and are willing to stretch your definition of what can be in SF, you will probably enjoy this book. This book is very focused on the performing arts aspect of our protagonist, Iris Lei, with mostly backgrounded science fiction elements until the latter parts of the book. And it never becomes hard SF. Again, if you’re OK with that, I think you’re in for a real treat.

The book has a slow start, which can be tough for some, but I think it’s important for many reasons: it really drives home how dedicated to the craft Iris Lei and her fellow students at Papilio are; it serves to really highlight Iris’ relationships, which is a KEY plot point in the second 60% of the book; and it really makes us crave the inevitable scene change, allowing Ms. Fan to really make that an emotional hit.

The only thing that was a bit of a miss for me was Iris’ love story plot points. I don’t have any problems reading YA, but the further I get away from it, the less I can truly relate to the relationship woes of the main characters. Intellectually, I know it feels like it’s the most important thing when you’re that age. But knowing how much it’s not just takes me out of it.

I think the novel comes together well. It was clearly written as a trilogy (almost nothing is resolved at the end of this book), so we’ll have to see how it all works as a narrative, but I liked the story.

OK, Spoiler time now. The rest of this’ll be spoiler-filled so I can better talk about the plot. You should have everything you need to know above about whether to read the book if you can’t stand any spoilers.

The plot has a lot of similarities to A Planet for Rent by Yoss, but with a different set of metaphors. A Planet for Rent was, obviously, a metaphor for a post-Cold War Cuba with the Aliens serving as the First World and the way they treat the Cubans. Starswept felt to me like it contained two separate metaphors. Part 1 of the book clearly seemed like a metaphor for college debt when doing a degree in the arts. The Papilians LIVE for their performances. Some may have more or less intense feelings than Iris Lei, but they seem to all be doing it for a love of performance. Yet, just like in real life, most people who are awesome musicians are not going to be in the London Philharmonic (assuming there’s good pay that comes with that prestige). Some will end up in orchestras where they need a spouse to support them. Many will end up teaching the next generation. And nearly all will end up with crushing debt they don’t have the ability to pay back. But, as long as they’re not starving, the joy of performance may outweigh the financial issues.

Starting in Part 2 of Starswept, the narrative changes to a slavery metaphor. I was a little torn about what the best real-world analogue was. On the one hand, we eventually discover an Abolitionist movement and the characters are treated as little more than objects by the Adryil. So that would seem to point to African slavery of the 1600-1800s. But then there’s the aspect that the Earthling performers are being told they’re getting a better life and their government is complicit in understanding that they’re being sold into slavery. This points to a couple potential sources. The simplest, of course, is modern slavery. There are people right now who were told they should go to the USA, Japan, or the UAE to get better jobs. Once they get there their passports are confiscated and they become slaves and/or sex workers. There may also be a tie to how the Chinese workers who came to the Americas were lied to. They were shipped over to work here and then told they needed to pay their way back, but were paid such a low wage that they were stuck here. This leads to many Chinese populations in the Americas, including the Chinese population in Cuba. Either way, while we have lots of foreshadowing that things are not what they seem (especially once Damiul starts teaching Iris how to not be mind-controlled), I think Ms. Fan does a good job of portraying how bad things can go for those who are unknowingly sold into slavery.

View all my reviews

Review: Salt, Fat, Acid, Heat: Mastering the Elements of Good Cooking

Salt, Fat, Acid, Heat: Mastering the Elements of Good CookingSalt, Fat, Acid, Heat: Mastering the Elements of Good Cooking by Samin Nosrat
My rating: 4 of 5 stars

I’ve been really improving my cooking by leaps and bounds thanks to America’s Test Kitchen’s books. They make sure recipes are perfect (or as near as can be) in terms of directions, ingredients, etc. They have truly spoiled me to the point that I often hate other cookbooks. But, as my wife says, you’re not truly cooking until you can just look at the ingredients in the house and come up with food on the fly. Or know how much salt the food needs by tasting it. So, after seeing Samin Nosrat’s Netflix show (which shares its name with this book), I added the book to my wishlist.

I received it as a gift and I’m very glad that I did. While it’ll definitely take me a few times of re-reading the first half of the book (the part that talks about how to use salt, fat, acid, and heat in cooking without presenting any recipes) to absorb all the ideas, I’ve already been able to use some of the ideas (particularly around salt) to improve my ability to improvise in the kitchen as well as finally be able to do that enigmatic part that ends most ATK recipes – “salt to taste”.

If you’ve a 100% beginner cook, I still recommend America’s Test Kitchen as the best training wheels you can find. I’m still planning on using my ATK books and getting more because when you’re doing an unfamiliar recipe (say, from another region of the USA or another country) it’s pretty hard to improvise because you don’t know what the platonic ideal tastes like. But if you want to move to the next level, I’d put this near the top of your list by Kenji Lopez-Alt’s The Food Lab (I haven’t read it, but EVERYONE loves it) or McGee’s “red book”.

View all my reviews

QGit vs GitQlient

I wrote about GitQlient a while ago. A few days ago I got a GitHub notification that GitQlient had finally reached 1.0. Consequently, the author created an Appimage version of the client so I was finally able to try it without having to compile on my own. As I started taking screenshots for blog post, I realized that the points I wanted to make would be more easily made if I could show them via a video, so I made a video comparing the two.

The Twins Recount their Day

A few days ago, I had the opportunity to ask the twins what they did that day while they were isolated from each other.

Stella: “We played LEGO and built a lot of cool things.”

Sam: “We went to Costco and then came right back home.”

Mind you, they both had the exact same day and did the exact same things. If I had to guess at why they focused on the things they did, I’d say that Sam’s answer was based on the fact that he likes to go out, especially to the park. So he was upset they’d left the house and hadn’t done anything he found fun. I’m not sure why Stella only focused on the LEGOs, but she is still playing with them a few days later, so maybe she was really happy to have new things to play with.

My first PyPi Package!

I was reading Serious Python by Julien Danjou as well as looking through other Python repos when I realized that my Extra Life Donation Tracker repo was a mess. (It’ll be different by the time you read this, but here’s how it looked at the time) After learning about how things should be structured and reading Mr. Danjou’s book about how I could use Sphinx to auto-document my code, I decided to undertake the challenge. However, there was a lot to learn and this code is used by many others for their Extra Life campaigns. I wanted to start off with much simpler code, so I started off by packetizing my lastfm-twitter code. It was a fun journey over the last week or so as I learned how to restructure my code and auto-document. (I also learned a lot about how to use Drone CI, which I’m using for my home projects that aren’t on GitHub) As the final lesson, I taught myself how to create a package for PyPi via Drone CI and so, I now have a PyPi package that anyone can import with pip!

PyPi Page for lastfmtwitter

And you can also see the Sphinx documentation.