Use ChatGPT anonymously on DuckDuckGo

Can be used ChatGPT anonymously? DuckDuckGo has a solution.

When using ChatGPT -or similar- there is a huge concern for what it learns from your inputs. No one would like these chatbots to spread the voice in something that should be private and could identify you. Despite the fact that you must use clear judgement in whatever you input to ChatGPT, Gemini, Mixtral or any other tool based on a Large Language Model (LLM), it has been great news that DuckDuckGo -the giant of privacy on Internet- made public a tool that uses ChatGPT anonymously. The tool is named DuckDuckGo AI Chat.

How to access DuckDuckGo AI Chat?

DuckDuckGo released DuckDuckGo AI Chat. This tool let’s you query ChatGPT 3.5, Claude 3, Llama 3and Mixtral. You just need to access DuckDuckGo AI Chat on or It’s possible to invoke the tool from inside DuckDuckGo; for this, type: !ai or !chat. All these methods will take you to DuckDuckGo AI Chat.

How does DuckDuckGo lets you query anonymously ChatGPT?

First, DuckDuckGo says that they don’t save any chats. Then, at their post, it is explained with more details how they let you query anonymously these AI chatbots. Quoting from their post:

“When you land on the AI Chat page, you can pick your chat model – currently, OpenAI’s GPT 3.5 Turbo, Anthropic’s latest generation Claude 3 Haiku, and open-source options Mixtral 8x7B and Meta Llama 3 – and start using it just like any other chat interface. Just like searches on DuckDuckGo, all chats are completely anonymous: they cannot be traced back to any one individual. To accomplish that technically, we call the underlying chat models on your behalf, removing your IP address completely and using our IP address instead. This way it looks like the requests are coming from us and not you. Within AI Chat, you can use the Fire Button to clear the chat and start over. To respond with answers and ensure all systems are working, the underlying model providers may store chats temporarily, but there’s no way for them to tie chats back to you, personally, since all metadata is removed. (Even if you enter your name or other personal information into the chat, the model providers have no way of knowing who typed it in – you, or someone else.) We have agreements in place with all model providers to ensure that any saved chats are completely deleted by the providers within 30 days, and that none of the chats made on our platform can be used to train or improve the models.”.

Final words

It was a very pleasant surprise for me these news. I was a bit behind on it because DuckDuckGo published this information on June 6th… but anyway, it is awesome and deserves to be echoed. Hey! By the way… It is free! So, give it a try.

Learning to program using Python

Learning to program using Python is a great choice. Python is a friendly language where one can easily learn the building blocks of programming.

In learning to program using Python, I want to share some resources that I have found key to master learning to programming supported on this awesome language. The resources in here will be revisited from time to time to keep them updated or to add new ones.


Introduction to CS and programming using Python

This course was lectured in Fall 2022, by MIT’s professor, Ana Bell. I like the fact that it is a real course where MIT students shared their inputs.

I highly encouraged you to view the complete course here.

Videos on YouTube

Learn to Program: The Fundamentals

Course link.

Free Python e-books

Threading.Lock and its uses in Python

In Python you can spawn a new thread to perform a task, and then wait for that thread to finish with its task.

One of the reasons why programmers like to work with threads is that all of the threads share the same data. If you have a global variable “x”, and you start up a bunch of threads, all of those threads share the same value of “x”.  For example:

    import threading

    x = 12345
    y = 'hello'
    z = [10, 20, 30]

    class MyClass(threading.Thread):

    def run(self):
        tid = threading.get_ident()
        print("Thread {0} has x = {1}, y = {2}, z = {3}".format(tid, x,y,z))

    for i in range(5):
    t = MyClass()

In the above code, we create five instances of MyClass, each of which has a “run” method. We invoke that “run” method within a new thread with t.start(). Within each thread, we have access to all of our global data.

This might lead you to believe that you can modify data from within the threads. And that would be a very, very bad idea. This is because Python’s built-in data structures aren’t “thread safe.”  This means that certain operations require several low-level instructions, and that Python might start executing a different thread partway through those instructions. If A and B are both modifying the same data structure, then we’re in trouble.

Note: All text before this line is just a snippet of the article Threading.Lock and its uses in Python, published in the newsletter Better Developers. The author of the already mentioned article is Reuven M. Lerner. Subscribe today to Better Developers using this link.

Workaround for tracker-miner-f high CPU utilization

High CPU utilization
Workaround for tracker causing high CPU utilization

One fine day I heard a laptop of mine making a sustained noise. I thought immediately of high CPU utilization. My intuition was right.

The issue was happening in Debian 11, running the Linux kernel 5.10.0-17-686-pae. Yeah, you’re right, it’s an i686 still functional machine. The issue began suddenly, but once it started remained happening for hours with no signs to stop.

I checked the processes using “top” and soon found the culprits. They were:

  • tracker-miner-f
  • tracker-extract
  • tracker-store

I have never seen these guys before, so, I started browsing the web for advisory… I found a good match in the thread tracker-miner-f taking over 100% of cpu. First, I learned that tracker-miner-f is Gnome’s file indexer. I had no idea about it. Anyway, I searched for any systemctl command to disable it, and found none. OK… so, I continued reading and figured out to uninstall these packages:

  • tracker-miner-fs
  • tracker-extract
  • tracker

but I noticed a removal of any of them (or all of them) would impact nautilus; so, I dismissed the idea of uninstalling them.

Then, I emptied the cache of tracker:

rm -f .cache/tracker/*

but the issue came back later.

Read more

VNC server installation on Linux Mint running the Mate desktop environment

VNC server on Linux Mint Mate desktop


The installation of a VNC server on Linux Mint -running the Mate desktop environment- can be accomplished by following this step-by-step guide. The procedure below is scoped to run the vnc server on demand, it is, only when required.


First thing anyone should do is to trigger an update of the packages from the corresponding repositories. To accomplish this, simply run:

sudo apt-get update

I would say it should be good to upgrade the versionof the installed packages by running:

Read more