More on Google’s Poor Search Results

Back in January, I wrote about a Twitter thread concerning poor Google search results. The complaint was almost all the results were ads. DKB has a new post that covers the same ground. He says that Google is dying and reddit is now the search engine that everyone uses.

Neither of those two claims seems valid. After all, no one thinks that Google, who just had record profits, is literally dying. And how would you even use reddit as a search engine? DKB provides the needed context in his post. What is actually dying is the quality of Google search results in certain categories. Those categories are precisely the ones that attract advertisers. If you ask Google who the 32nd President of United States was, you get a accurate answer and probably little advertising. If, on the other hand, you search for a review of a particular late model car, your results are apt to be mostly ads and SEO engineered content.

That’s where reddit comes in. If you ask reddit about that same car, you’re going to hear from real people who doubtless have strong views but not a vested interest in getting you buy one. So DKB’s claim that reddit is the “most used” search engine should be understood to mean that people are now appending “reddit” to their searches as a way of finding out what reddit has to say on subjects whose results are abused by ads and SEO.

Take a look at the post to see the whole argument. You may or may not agree but it’s one more indication that Google is failing in their primary business.

Posted in General | Tagged | Leave a comment

Own A Color

Most Irreal readers are, I’m sure, like me in their skepticism of the NFT concept. It just wreaks of a scam to me and the most generous way of describing it is as a reincarnation of the Netherlands famous Tulip craze but without the flowers.1 Of course, it’s a verity in life that things can always get worse and this holds in the NFT domain as well.

Now, an enterprising innovator has expanded the NFT concept to the selling of colors. Just imagine, you can own a color and anyone using that color in an NFT would have to pay you. It’s like the spawn of a mutant copyright law and Brooklyn Bridge grift: Let’s take something that belongs to us all and use copyright law to claim we own it.

It’s not quite as outrageous as it seems because the “ownership” would apply only to colors used on NFTs within the Color Museum NFT marketplace. But why would anyone do this?

Let’s say you have a crude picture of an ape that you want to offer as an NFT. You could choose to sell it on the Color Museum marketplace and pay a fee for whatever colors you happen to use or you could sell it in a marketplace such as OpenSea that recognizes colors belong to us all.

Really, the whole thing—whether or not you’re trying to sell colors—is just silly and no one who values their time or money will have anything to do with it. For the others, I have a bridge they may be interested in.

Footnotes:

1

On the other hand, Paul Graham advises caution before dismissing NFTs.

Posted in General | Tagged | Leave a comment

Symbols in Lisp

Joe Marshall over at Abstract Heresies has a post that makes a point that’s easy to forget: Lisp has symbols and those symbols should be used in preference to strings or integers to represent arbitrary state constants. Most other languages don’t have symbols so you’re forced to use strings or enums for those state constants.

For example, a file-reading function in a non-Lisp language might return -1 or some other integer on end-of-file. In Lisp, you would simply return a symbol such as ’eof. As Marshall says, strings are composite objects with their own functions to manipulate them. Symbols are atomic objects that don’t really have any structure. Symbols are basically pointers to a memory location so it’s very efficient to implement things like comparisons.

It’s a short and simple post but, as I said, a useful reminder.

Posted in General | Tagged | Leave a comment

Words and Ideas

Paul Graham has a new essay up that discusses words and ideas. It’s an interesting piece that reminds me of one of my favorite quotes. The quote from Daniel Boorstin—a University of Chicago historian and the 12th Librarian of Congress—is “I write to discover what I think.1” I first saw it years ago and it made a big impression on me. Indeed, you can think of Irreal as a result of that impression.

Graham’s point is slightly different: you can’t think until you write. Or, at least, you can’t have fully formed thoughts, you can’t completely understand your thoughts until you try to explain them to someone else by writing them down. In Graham’s words,

If writing down your ideas always makes them more precise and more complete, then no one who hasn’t written about a topic has fully formed ideas about it. And someone who never writes has no fully formed ideas about anything nontrivial.

That seems provocative—and, of course, it was meant to be—but he has a point and justifies it in the essay. As with all of Graham’s writing, it’s definitely worth taking a few minutes to read it.

Footnotes:

1

Actually, the full quote is a bit wittier.

Posted in General | Tagged | Leave a comment

Some Comment Tips from Mickey

If you write code, you’re probably always adding and deleting comments. It’s one of those things that’s so fundamental you’d think everyone already knows the best way of dealing with them but I often see questions about how best to handle them in Emacs. Mickey has a tweet with some useful tips on wrangling comments in Emacs:

Those commands are also useful as building blocks. For example, I like starting functions (especially in C) with a comment box that gives the name of the function and a short description of what it does but I like the boxes to extend to the end of the line. Here’s a simple function that does that:

(defun jcs-comment-box (b e)
  "Draw a box comment around the region but arrange for the region
to extend to at least the fill column. Place the point after the
comment box."
  (interactive "r")
  (let ((e (copy-marker e t)))
    (goto-char b)
    (end-of-line)
    (insert-char ?  (- fill-column (current-column)))
    (comment-box b e 1)
    (goto-char e)
    (set-marker e nil)))

Notice how it leverages comment-box to do the heavy lifting.

Posted in General | Tagged | Leave a comment

Red Meat Friday: Résumé Gaps

We’ve all been there. If not with TikZ then some other application:

Posted in General | Tagged | Leave a comment

Emacs Extensibility

We all know that one of the chief—if not the chief—benefit of Emacs is its extensibility. We say it all the time. Irreal says it all the time. But every once in a while the truth of that statement comes crashing down on us in a particularly compelling way. Here’s a case in point:

It can, I guess, seem like a cheap shot to make fun of another editor’s feature addition but the reality is that while the VSCode community was celebrating a brand new capability, Elmad Elsaid provided a one-line implementation of the same feature for Emacs that anyone could apply and enjoy right now without waiting for a new release.

All open source editors have this capability in some sense because, after all, you have the source and can make whatever changes you like but Emacs is running on Lisp so you can make changes without recompiling everything and the liberal use of hooks makes adding a feature like the one discussed here trivial.

With Emacs, there’s no begging the implementers for a change and waiting for the next version. Most of the time it’s a simple matter of writing just a bit of Elisp, adding it to your init.el, and enjoying your new powers.

Posted in General | Tagged | Leave a comment

Support Melpa

I’ve said this several times but, really, MELPA is one of Emacs’ great resources. Think for a moment how important it is to your Emacs life and what you would do if it disappeared. How would you replace it? There’s ELPA, of course, but for ideological reasons it could never be as comprehensive as MELPA. There’s Nic Ferrier’s Marmalade Repo, which I thought was defunct but is rumored to be showing signs of life. Again, though, it’s restricted to Free packages so it, too, is unable to match MELPA’s coverage.

If all that seems too gloomy, don’t worry. MELPA isn’t going anywhere but has recently announced a way you can contribute to support its operations:

If you want to contribute—and you should—go to the MELPA Open Collective site. Steve Purcell runs MELPA on a shoestring so you won’t be financing any Caribbean boondoggles. If each of us, who depend so much on MELPA, chips in a few dollars, Purcell can keep this vital resource running.

Posted in General | Tagged | Leave a comment

Kernighan Podcast on Unix and C History

Here’s a pointer to another interesting talk by Brian Kernighan. This time, it’s a podcast on Unix and C history. The podcast is with CppCast a series specializing on Cpp matters (of course) but that isn’t afraid to venture into other topics. Kernighan is not a Cpp user although he considers Bjarne Stroustrup a close friend of many years

The podcast mainly deals with the early days of Unix and the C language. Many people assume—probably because of K&R—that Kernighan was a co-developer of C but he explained, as he always does, that C was Ritchie’s work and that his involvement in C itself was almost entirely K&R and the C tutorial that preceded it. He was, really, more of a C evangelist than a designer or implementer.

I know I write a lot about Kernighan’s talks but he’s such an interesting and engaging speaker that I always want to share. Even when he’s covering topics that I know well, he always provides context and a personal view that adds to my understanding of the subject. It’s that “personal view” that, in part, makes him so interesting. He was, after all, there for the making of the history he talks about. That and his obvious love for the subject matter makes him always worth listening to.

The podcast is 53 minutes long so plan accordingly.

Posted in General | Tagged , | Leave a comment

Ecomplete

I’ve been using mu/mu4e for 5 years and love it. It really provides everything I want in a mail client except perhaps for handling HTML—which certain miscreants insist on sending to me—but even that’s an Emacs shortcoming that will undoubtedly be remedied in the future. When I first started using mu4e I thought I would have to install BBDB to help me map correspondents to their email addresses.

That turned out to be unnecessary: by default, mu4e uses the mailabbrev mechanism to complete mail addresses so it just sort of worked out of the box. As far as I can tell, this works by scanning stored emails to get possible completions. The problem is that old and erroneous addresses also come up so it’s sometimes hard to know which one is correct.

I just saw this reddit post by astoff1 that recommends using ecomplete for mail address completion. This has the advantage that the mail addresses are explicitly listed in a file (~/.mailrc) so there’s no ambiguity with old or broken addresses. The downside is that you need that file of addresses.

I’m going to do a bit more research to see if I can automagically generate at least a first pass at a .mailrc file. I’ve been content to let it just work for the last 5 years so I haven’t looked into how things actually work. Now, I may need to do that so that I can implement an ecomplete solution as astoff1 suggests.

Posted in General | Tagged | Leave a comment