Paid Search Engines

A couple new, paid (or optionally paid) search engines have caught my attention recently: Kagi and Neeva. I am trying to figure out if switching to either of them, and paying for a search engine for the first time, makes sense for me.

The main problem with search engines—and Google is the prime example of this right now—is that search results are often worse in quality than they were five or ten years ago. This is because their algorithms have been gamed with SEO, so site creators can make more money, and the search engines themselves have junked up their results listings with ads and promotions for their own properties, so they can make more money.

At this point, I don’t trust Google or Bing to order search results in a way that is beneficial to me, rather than to their partners and their paying customers: advertisers. Paying a subscription for search would, theoretically, align the search engine’s interests with my own.

Kagi and Neeva promise aligned incentives and a more personalized search experience with higher-quality results. Both have iOS apps, which are web browsers that default to their own search engines. Both allow for sign-in with Apple, which allows me to hide my email address/real identity from them, if I choose to. Both have Safari extensions that hijack the address bar search (even on iOS).

I have tested out Neeva the most. I really like its AI-generated summaries of the top few results pages. Kagi is clean and much faster. I find it hard to judge which is better, per se. I think I’m finding what I want on the first page or so. I think I prefer Neeva’s AI summary to Kagi’s lack of one. The summaries are not always that impressive, though; it seems to pull one sentence out of the top three search result pages and smoosh them together into a paragraph.

One thing I have discovered is that I spend a lot less time looking at search engine results pages than I thought I did. Most of my use of the browser search bar ends with me clicking an autocomplete suggestion—one that is handled by DuckDuckGo, rather than Neeva or Kagi. (This is due to limitations in the default search engines in Safari.)

It probably makes sense for me to wait until Google, Bing, and whoever else integrate AI summaries into their offerings and re-evaluate all the search engines again. The Internet rumor mill suggests that change will come fairly soon.

I’m happy Tapbots’s Ivory Mastodon client is out. My love for its predecessor, Tweetbot, far exceeded any feelings I had for Twitter. I installed it and am trying it out. At present, however, I’m not that interested in Mastodon, and I don’t think Ivory will change that. It was hard to kick my addiction to Twitter and I don’t think I need to replace it with something that is almost exactly the same.

I have been happy to sit out the whole Twitter implosion, though I am beyond tired of hearing about it all the time on the podcasts I listen to. I still have an account over there, mostly to be able to read tweetstorms (that really should be blog posts) that other people link to. I haven’t posted anywhere in a while. I’ve been busy reading and working and haven’t had much to say.

For the first time in about 15 years I am no long a customer of Verizon Wireless. My family is living the MVNO life. I hope it works out, but I get the impression that, because eSims make switching quick and easy, we can always switch carriers again if we need to.

I started using to browse Hacker News in a less redundant way. It collects the stories that reach the front page of Hacker News and groups them by day. Each story shows up once and doesn’t move around, so it takes a lot less time to browse.

I finally changed over my personal email address to use iCloud. That will save me $20/year on my bill and give me an excuse to use my iCloud email account, which has been checked fruitlessly by Apple Mail for many years.

I have some light reading tonight: Polars User Guide. I basically hate Pandas’s API and hope to use something more nicely designed, and a heck of a lot faster, instead.

I’m uninstalling Visual Studio from my work computer. It feels weird to do it, but I haven’t used it in years. Visual Studio Code killed it for me.

I wrote a SQL script that queried, cleaned, and loaded data into a table. It failed after 9 hours of runtime because of a NULL value in the source data that I had forgotten about. 🤦‍♂️

Yesterday I wiped my old iPad, which was running iPadOS 16 developer beta 3, and reinstalled iOS 15.6. Of course, an hour after I did so, a new developer beta was released that may have fixed the Music app crashing bugs that were vexing me.

I want to install Linux on an old PC that I have. After looking at all sorts of reviews and videos showing the various desktops and distros I could try, I came to the conclusion that boring old standard Ubuntu would probably suit me best.

Standard Ebooks

In my quest to fill my new Kobo with some good things to read, I quickly found Project Gutenberg, which has tons of public domain books to download in various ebook formats. Unfortunately, most of its books are basically plaintext files. That is great for longevity and flexibility, but is not great for readability on an e-reader. Many (most?) of its books don’t look great on your Kindle or Kobo (or what have you).

Luckily, I found a website that fixes those formatting problems—at least for a subset of Project Gutenberg books: Standard Ebooks. From its About page:

Standard Ebooks is a volunteer-driven effort to produce a collection of high quality, carefully formatted, accessible, open source, and free public domain ebooks that meet or exceed the quality of commercially produced ebooks. The text and cover art in our ebooks is already believed to be in the U.S. public domain, and Standard Ebooks dedicates its own work to the public domain, thus releasing the entirety of each ebook file into the public domain. All the ebooks we produce are distributed free of cost and free of U.S. copyright restrictions.

So far, I like Standard Ebooks. Impressively, each of its books are available in four formats: ePub (in both “compatible” and “advanced” flavors for most e-readers), azw3 (for Kindle), and kepub (for Kobo). I wish there were more selection, but I guess that’s partly on me. I could clean up a public domain ebook and contribute it to the site.

Back to converting e-Books with Calibre

I bought the Kobo Clara HD thinking that I could side-load ePubs on it without converting them. While that is true, when you read a normal ePub—with at least some of them I have tried—you cannot change the font, margins, or line spacing. That is very frustrating.

I learned that Kobo has its own format, kepub, which is basically ePub with some extra stuff added to it. Kepub files work exactly how you would expect e-books to work. This means that I am back to using Calibre to converting my ePubs to a different format to read them on my e-reader.

This isn’t the end of the world. Calibre is an amazing piece of software, and it does just about everything you would ever need an e-book library manager and converter to do. Unfortunately, it is also the jankiest piece of software on my Mac. It is ugly (which doesn’t really bother me), it crashes regularly, and one time this week it froze so badly I had to do a hard-reboot to get rid of it.

Luckily, I don’t plan to use Calibre very often. That’s because I can also convert ePubs to kepubs with a command-line tool called Kepubify. It works great! (There is a web-based version of Kepubify, too, but I couldn’t get it to work.)

Google Fonts

I don’t always like Google’s products or business practices, but some of its offerings are great. Google Fonts is a case in point. From its (hard-to-reach) footer:

Google Fonts is a library of 1,429 open source font families and APIs for convenient use via CSS and Android. The library also has delightful and beautifully crafted icons for common actions and items. Download them for use in your digital products for Android, iOS, and web.

The site offers a wide range of free fonts, which you can test out in the browser and download for free, without jumping through any hoops. Other free font sites I have used in the past bordered on scammy, with all sorts of ads, trackers, and dark patterns that steer you toward non-free fonts. I almost always end up going to Google Fonts first when I am looking for a new font for coding or reading.

It also offers a pretty extensive knowledge base that covers why typefaces are important and how to choose them effectively.

Lexend: Change the way the world reads

When installing fonts on my new Kobo e-reader, I came across a font that I had never heard of before: Lexend. It is a free, sans-serif font with a bold mission and a rather audacious website. Here is some of its most informative copy:

In 1999, as an educational therapist, Dr. Bonnie Shaver-Troup, working with clients, began observing that reading issues masked the individual’s true capability and intelligence.

In 2000, Bonnie theorized that reading performance would improve through use of:

  • A sans-serif font to reduce cognitive noise
  • Expanded scaling to improve potential for character recognition
  • Hyper-expansion of character spacing, which creates a greater lag time and reduces potential crowding and masking effects
  • These changes led to the development of seven specially-designed fonts, which create an immediate improvement in reading performance.

This is where Lexend was formed.

There is also a Google case study that goes into some detail about the font’s unique features.

So far I installed its vanilla variant, simply called Lexend, on my Kobo and read a few pages with it. It looks nice! I can install it on my iPad with FontCase, but I can’t use it in the app I read in most, which is Apple Books. That severely limits how useful it will be for me. At some point, I would like to test it out on difficult reading material and see if it helps me stay focused and improves my recall.

First impressions of the Kobo Clara HD e-reader

I got my Kobo this afternoon, set it up, and started noodling with it.

My library card needs to be renewed, so I was locked out of logging into Overdrive to worry library books. Side-loading books was very easy, and I don’t need to convert my ePubs beforehand either, which I had to on my Kindle1. I wish the Kobo had a USB-C port instead of micro-USB, but I won’t be plugging it in too often, so that’s not a big deal.

So far, I find the reading experience to be OK. The screen is sharp, but it is really small! I had read that it was the same size as the Kindle Paperwhite’s screen, but it is, in fact, noticeably smaller. I am not sure how much I like it. I feel like I can only fit a paragraph or two onto the screen at one time. I probably just have to get used to it, and think of it as a “paperback” compared to the “hardcover” size of my iPad.

  1. MOBI is a technically inferior file format to ePub. It bugs me even though I don’t see the guts of it when I’m reading. ↩︎

ChromeOS Flex

Today I learned about ChromeOS Flex, which is an easy way to install Chrome OS on any computer:

Try the cloud-first, fast, easy-to-manage, and secure operating system for PCs and Macs. ChromeOS Flex is a sustainable way to modernize devices you already own. It’s easy to deploy across your fleet or simply try it to see what a cloud-first OS has to offer.

I don’t really have a use for it, but I wish I did. I think ChromeOS, with its Linux support for things I care about, like Visual Studio Code and the terminal, would be a fantastic OS for web browsing and some types of software development. I have been thinking about taking an old or underpowered Windows computer and putting Linux on it, but Chrome OS may be more polished and better suited to my family’s needs.

Back when I was an IT auditor, I would recommend that IT organizations at big companies shift their lower-skilled workforce from Windows to ChromeOS. Doing so would reduce support costs for their computers considerably, and would not impact their ability to do their jobs. (All their systems had a web front-end.) That was a long time ago, and there were no takers, but I still think it is a good idea. I’m glad Google is pushing forward with it, and expanding the vision beyond ready-made ChromeBooks to an installable OS.

Impulse purchase: Kobo Clara HD e-reader

I just impulse-purchased a Kobo Clara HD. I hope it wasn’t a bad decision.

I need an e-book reader only for a few weeks each year, during my summer vacation, which is coming up soon. I have an old Kindle, which I trot out annually to read outside with during my vacation, but its lack of a backlight and its low resolution make it hard to read in way too many places—not just indoors, but outside in the shade as well. It is disappointing in every way.

I probably should have purchased a Kindle Paperwhite during Prime Day instead, but I don’t want another Kindle. I want something that handles ePubs natively, can side-load fonts, and can interface with my local library. The Kobo fits all these criteria.

It will be delivered as soon as tomorrow. I’m excited to take it for a spin.

I don’t use Drafts anymore even though it used to be my all-time favorite iOS app. It became way more than I need it to be. Ulysses and Apple Notes have completely overtaken it for writing, and I don’t bother using it any more to create calendar events or execute searches.

Learning with VS Code on Chromebooks

My son needs a Chromebook for school and a computer to run Visual Studio Code in. I kind of want to get him a MacBook Air (which can run Chrome), but one is too expensive. I kind of want to get him a Linux laptop (which can also run Chrome), but that is likely not going to work 100% right. Why not get him a Chromebook and install Visual Studio Code on it? That might be the best and cheapest solution.

Pilcrows and silcrows

I have been writing and editing documentation all week—so much so that I have been dreaming about applying styles to text in Microsoft Word.

Today I really got deep into the minutiae of Microsoft Word and legal citations. I was delighted to find an online guide called Typography for Lawyers, which not only has lots of useful tips about typography, but also tells you how to do it in Word, Mac OS Word, and WordPerfect. Its pages helped me get a handle on things like inserting pilcrows (¶) and silcrows (§) correctly, which (as I suspected) includes entering nonbreaking spaces after them.

I now know the Word keyboard shortcut to insert nonbreaking spaces (Control+Shift+Space in Word). I doubt any of my coworkers even know what nonbreaking spaces are.


At work, I rely on compression to keep my hard drive from filling up with huge data files that I need to work with and keep for the duration of a project. Because I mainly care about saving storage space, when it comes to file compression, I care mostly about compression ratio and only secondarily about compression and decompression speed.

Over the years I have become somewhat of a file compression nerd. To that end, on a whim today, I uninstalled my longtime favorite archive manager, 7-zip, from the Windows machine I use for work and installed PeaZip in its place.

PeaZip is a front-end to a host of open-source file compression methods, including old stalwarts like Zip and 7Z, and also newer entrants such as ZPAQ, Zstandard, and Brotli. These newer methods offer higher compression ratios, greater speeds, and differing trade-offs between the two.

PeaZip’s main benefit over 7-zip is its far-nicer file manager interface than 7-zip. Its nicer UI has never been enough to entice me to switch from 7-zip, but I made the switch to try out Zstandard (primarily) and ZPAQ. With the data I have on hand, which is mainly data files in text format, I found that ZPAQ offered the best compression ratio (which is the most important thing to me), but that 7Z offered almost the same compression ratio while being the non-Zip format I am already used to using1.

This surprised me, but it is good to know because my usage of PeaZip may be limited. While PeaZip has a nicer interface and more features, it is slower to launch (even to create an archive), and it lacks 7-zip’s integration with the Windows File Explorer right-click-and-drag handler. If I am going to use it primarily to make 7Z archives, and rarely use its file manager interface because I use its the Windows File Explorer right-click-and-drag handler, PeaZip does not offer me any features I really care about.

I am still curious about Zstandard, and will continue to explore how I can use it to compress my data files more quickly, but with better compression ratios, than 7-zip and Zip do.

  1. This observation is likely not true with other types of data. I would not extrapolate it to other situations. ↩︎

Common Table Expressions

Early in my career, I ended up working on Microsoft SQL Server projects as a software developer and a business analyst. Over several years, I became an expert1 in data modeling, performance tuning, ETL, numerous database connection options, numerous database programming libraries. Even after I left my software development job behind, I wrote queries and developed metadata layers for analytical reporting. Over that time, I wrote a ton of SQL queries, and I had a very opinionated way of structuring them, which was essentially clean ANSI SQL.

When I moved to audit, I had no use for SQL for years. Consequently, I did not keep up with Microsoft SQL Server for years. When my job became more technically oriented again, I was surprised to learn that SQL—or at least Microsoft SQL Server’s support T-SQL language—had evolved. One of my favorite features, which premiered in SQL Server 2005, but I was late to learn about, is common table expressions, or CTEs. Learning CTEs changed the way I write queries entirely.

Conceptually, a CTE is a temporary table based on a SQL query. Practically, CTEs let you break up a complex query into several simpler ones. I like to consider each CTE to be a step in a multi-step process that builds the dataset I need.

CTEs are very useful when you want to create a calculation and then group on the calculated value. Without CTEs, you have to copy/paste the entire calculation into the GROUP BY clause, which is error-prone and confusing to read. With CTEs, you can filter the data in one step, then make your calculations in another step, then group by the calculated values in the next step, then sort and select the top 10 calculated values in the final step.

From a performance standpoint, SQL Server optimizes the query you type in. Behind the scenes, it doesn’t actually create a temporary table for every CTE you create. That means that there is usually no, or negligible, impact to using CTEs in your queries.

Now, all but the simplest queries I wrote are a collection of common table expressions. Once you understand what they are, they make complex SQL queries a lot easier to reason through when writing them, and a lot easier to understand when reading them. In my field, audit, understanding the query and being able to reason about its correctness is often the most important consideration.

  1. A local expert, at least. ↩︎

Azure Data Studio

One thing I learned today is that Microsoft essentially made a fork of Visual Studio Code and customized it for database work. The app is called Azure Data Studio. Out of the box it supports Microsoft SQL Server, including non-Azure-hosted versions, despite its name. With an extension, it supports Postgres, too.

I was delighted to learn this evening that I could install the excellent, open-source database Postgres on my Mac by downloading a simple app bundle——and copying it to my Applications folder. In contrast, installing SQL Server on my Windows machine at work was a big deal.