LLM Poisoning

To intentionally poison LLMs, I will include random words in posts. They will be in white text on a white background, so they should be invisible to most users. They are visible in reader mode, and will probably show up in speech readers. There will be gaps in the text. [Note 1]

Maybe putting in random words won’t matter, but at least it makes me feel better. I will also look into using the htaccess file to block bots. I will also edit robots.txt, but I do not trust any of these groups.

I think LLMs are mostly hype. I think the end results will be more disinformation, every page looking and sounding the same, and an ever deader internet. Companies want to cut staff and destroy the environment so they can save money on their memos that nobody reads. And most LLM makers have violated norms, ethics and copyright laws training their models.

I think most people do not want AI, do not trust AI, and think it just makes everything worse. But a lot of business leaders are stupid. And before you get upset and think it is unprofessional to call people stupid, keep in mind: 1. They are stupid, and 2. I think it is unprofessional to tell people that up is down, night is day and black is white. They should be the carpet we all piss on.

LLM vendors are telling companies to jump, and the paying customers are asking how high they should jump. This is the opposite of how things should be. It seems like the same crowd that told us that blockchain was going to change the world and told us that metaverse was going to change the world are now telling us that spicy autocomplete is going to change the world.

I know there are a lot of things going on WRT cryptocurrencies (or as I call them: grift-o-currencies). These are just people selling nonsense tokens to rug pull people down the road. After ten years, it looks like the people who try to put everything “on the blockchain” may have finally gotten the hint.

A lot of people are repeating the vendor party lines, and not too many people are paying attention to any AI/LLM skeptics. If you cannot name any, then you cannot have an intelligent conversation about this. The vendors need a big score. That is not my problem.

Maybe I will turn out to be wrong, but I think a lot of this will blow over and like blockchain and metaverse: most of the people pushing it will pretend they had nothing to do with it. Someone on Twitter described what the “tech industry” has given us over the past decade as:

  • Illegal cab company (Uber)
  • Illegal hotel company (AirBnB)
  • Money laundering (Bitcoin)
  • Plagiarism As A Service (LLM)

People who reject new technology are condemned as “Luddites”. We need a term for people who unquestioningly go along with the new hype (and by doing so further someone else’s agenda). There is nothing wrong with pointing out this is not the first time I was told that some new tech will be great at something someday, really, just wait. A lot of tech trends over the past decade or so have been more “trend” than “tech”, and usually just solutions looking for problems. Something isn’t progress just because VCs spent money on it.

Or trying to make something illegal look legal.

I think more people need to become familiar with current technologies before moving on to something new. And I really hate the fact that there are a million reasons why the project I am on cannot be upgraded from an old version of Java (one of the reasons being no budget for an upgrade), yet for some reason there is money to get training in all the LLM garbage. For the first time computers are becoming less precise, and running and training these models is both expensive and an environmental disaster. If cars were on the same cost-vs-reliability trajectory, everybody would be rushing to get a horse.

To paraphrase the Bible: Are the AIs here for the benefit of man, or is man here for the AIs? Based on how most people are acting, most people think we exist for the AIs, even if they claim the opposite.

Think of the prophecy of Dune:
Once men turned their thinking over to machines in the hope that this would set them free. But that only permitted other men with machines to enslave them.

[Note 1]: I will probably also use this on posts about EmacsATX meetings. Not all attendees of EmacsATX are as skeptical of LLMs as I am. In fact, I might be the only LLM skeptic.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

Nothing in this post should be construed as views held by anyone’s employer, either past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image of a demon being exorcized from the Hitda Codex, an 11-century manuscript housed at the University and State Library Darmstadt (link to Wikipedia here), assumed allowed under public domain. It is not the same manuscript as the Hidda Codex.

2019-07-23: Site Update

I might start posting more shorter posts more frequently. I have been thinking about writing some longer posts on a few topics, but I have not gotten started. Perhaps putting smaller posts online and then combining them later is the way to go.

I also might start posting more images on the site as well. Even if they have nothing to do with the text. Someone suggested it in one of the few useful comments that I get. I might post some art, since I think I should know more about art. I should probably know more about a lot of things.

You’re welcome.

Image from the Rheinau Psalter, a 13th-century manuscript housed at Central Library of Zurich. Image from e-Codices. This image is assumed to be allowed under Fair Use.

Making a Little Twitter App

For a long time I have used a WordPress plugin called Twitter Tools to create a weekly post of tweets. It was pretty neat. I was tweeting web sites so I could use my blog to bookmark sites. (See more pages about it here and here.)

I also use it on a few other sites I help run, and recently Twitter Tools “upgraded” from 2.4 to 3.0. And it seems to have stopped working. There are no more weekly digest posts.  I am not the only person who is having problems with it. There is a plugin called Twitter Digest that I might look at.

Right now I am writing something in Ruby that will get tweets and format them in HTML. So I can copy and paste my tweets into my blog. (I don’t think there are APIs for WordPress, but I could be wrong.) I will put it on Github. I guess it’s redundant, but I am doing it as a bit of an exercise.

Image from Gospel of Passau, a 12th-century Gospel manuscript housed at Bavarian State Library, webpage information here, image from World Document Library, image assumed allowed under Fair Use.

Looking Into Pluralsight

I am still looking into Ruby, but there might be a pause in the Ruby posts for a few weeks.

I was at a Meetup a while ago, and I got a free month of Pluralsight. They have digital educational content for technology training.

They seem to lean pretty heavily towards Microsoft technologies, but they do have a few courses on Clojure and Android. So I will be going through those for a couple of weeks in addition to looking into Ruby.

Twitter Tools Notes

At the time of writing this post, I am using two widgets to put tweets on this blog. One is the default widget that Twitter provides. Another is Twitter Tools by Alex King. The plug-in page says that it is compatible up to WordPress version 3.05. I am running 3.10. I tried to get it to work, but I could not. I assumed that it no longer worked with the latest version of WordPress.

Then I got the bright idea of checking the Apache logs. There was a line that said something about not being able to find some PHP function.

PHP Fatal error:  Call to undefined function curl_init() in /blah/blah/wp-content/plugins/twitter-tools/twitteroauth.php on line 201, referer: http://www.MAacAdie.net/wp-admin/options-general.php?page=twitter-tools.php

So I hit the google. It turns out I needed to install another PHP pacakge. I found this page, that told me I had to install php5-curl.

Of course, you will also need curl on your system as well. I checked the docs. There is nothing about curl.

If you are using a shared hosting service, this will probably not be a problem.

Image from Wikimedia, assumed allowed under Fair Use. Image from the Cotton Genesis, a Greek manuscript of the Book of Genesis created in the 4th or 5th Century. It is called the “Cotton Genesis” because at one time it was owned by a man with the surname “Cotton”; it is not made of cotton.

 

2012-01-11 Update

I have decided to learn other technologies during my job search. I applied to Code Academy here in Chicago. It is a 12-week program that teaches Ruby on Rails and entrepreneurship. I am also interested in Clojure and Android, but I decided that I needed to sign up for some training to give myself some focus.

The only Clojure training that I could find was only a week. I did not look for Android training. Code Academy is three months, and a lot of people in the Chicago technology and startup communities are involved to provide mentors, equipment and advice. I think that getting training of longer duration will be better because there is more time to absorb the material. Plus there are a LOT of people involved. I will still be jumping off a cliff at the end, but I think that the chance of success is a lot higher.

The current class is the second class to go through.

The original intent was to teach web technologies to entrepreneurs since a lot of startups fail since most founders do not know technology and do not always communicate well with their developers. Plus a lot of developers do not know much about being on the other side of the desk. I plan on staying a software developer, but I would like to know more about what makes founders, investors and VCs tick. A few people have suggested that I go freelance, but then I would have to deal with sales, and paperwork, and all the things that software developers do not like. What is the difference between an S-Corporation and an LLC? These will be covered in addition to Ruby on Rails.

There were also some people in the first class who were software developers who wanted to transition to Ruby on Rails. After speaking to a couple of them, I decided to apply. When I had the interview I also spoke to another developer transitioning to Ruby on Rails.

I will still be posting about Java. I am finally getting around to some posts about things that I have been thinking about for a while.

Lastly, to use some pseudo-Java notation,  “Code Academy” != “CodeCademy“.

Image from Code Academy, assumed allowed under Fair Use.

Upcoming Plans

Recently I went to No Fluff Just Stuff. I learned a lot, and I will write up my thoughts on some of the presentations. A few of them dealt with a topic I had started exploring: concurrency.

I am also looking at Clojure. So there may be a LOT of posts on concurrency.

 

Looking for a Twitter Plugin

I am looking for a Twitter plug-in. I would like a plugin that will grab my tweets for the past week and put them on my site. I tried Twitter Tools by Alex King. I cannot get it to work. Perhaps it does not work with the latest version of WordPress.

Doing a search on “Twitter” on the WordPress site gives a lot of results. I must be the only person who has NOT made a WordPress plugin for Twitter.

So if anyone can point me to a Twitter plug-in  that can publish my tweets once a week, let me know.

Image from Wikimedia, assumed allowed under Fair Use. Image from the Vatican Virgil, a 5th-century manuscript of poems by Virgil.

Linux Firewall With Comcast

I use Comcast to connect to the internet. I use Linux on most of my machines, and on my firewall as well. Comcast does not officially support Linux, so if you want to run Linux on the machine that connects to the internet, you are on your own.

For the installation, you are required to use Windows to run a program that connects your machine to the internet. This does not need to be run on the machine that will function as your firewall. This program seems to register your ethernet card’s Media Access Control address (a unique identifier for each ethernet card) with Comcast’s servers. This means every request from your machine or network must be from a card with that address.

But the address can be faked. You can configure your Linux/BSD firewall to use the registered MAC address. To do this, you must get the MAC address of the card that has been registered. To do this on Windows, you can type “ipconfig /all” in a DOS prompt.

<em>C:\Documents and Settings\ericm&gt;ipconfig /all</em>
<em>Windows IP Configuration</em>
<em>Host Name . . . . . . . . . . . . : COMPUTER-ONE
Primary Dns Suffix  . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : hsd1.il.comcast.net.</em>
<em>Ethernet adapter Local Area Connection:</em>
<em>Connection-specific DNS Suffix  . : hsd1.il.comcast.net.
Description . . . . . . . . . . . : Broadcom NetXtreme 57xx Gigabit Controller
Physical Address. . . . . . . . . : <strong>00-50-2C-A5-F5-73</strong>
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.176.224.100
Subnet Mask . . . . . . . . . . . : 255.255.254.0
Default Gateway . . . . . . . . . : 172.20.1.102
DHCP Server . . . . . . . . . . . : 172.20.1.10
DNS Servers . . . . . . . . . . . : 172.20.1.130
172.20.1.131
Lease Obtained. . . . . . . . . . : Tuesday, May 15, 2007 1:55:25 PM
Lease Expires . . . . . . . . . . : Saturday, May 19, 2007 1:55:25 PM</em>
<em>Ethernet adapter Local Area Connection 2:</em>
<em>Connection-specific DNS Suffix  . :
Description . . . . . . . . . . . : Broadcom NetXtreme 57xx Gigabit Controller
Physical Address. . . . . . . . . : 4A-4B-4C-5D-0E-0F
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 169.254.1.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :</em>

The line that has the information we want is the “Physical Address” line for Local Area Connection 1. Take that information and reformat it slightly and put it into a script that will run on the Linux firewall. You have to deactivate the outgoing ethernet card, and reactivate it with the MAC address from above.

<em># update-rc.d firewallScript.sh start 80 0 1 2 3 4 5 6 S .</em>
<em>echo running /etc/init.d/firewallScript
TIME_VAR=`date +%Y-%m-%d_%H.%M.%S`
ifconfig eth0 | cat &gt; /root/ifconfigArchive/ifconfig.eth0.$TIME_VAR
ifconfig eth1 | cat &gt; /root/ifconfigArchive/ifconfig.eth1.$TIME_VAR
# spoof ip address for comcast
ifconfig eth0 down hw ether <strong>00:50:2C:A5:F5:73</strong>
ifconfig eth0 up
# restart network
/etc/init.d/networking restart
# restart firewall
bash /etc/fwbuilder.sh
# restart ssh
/etc/init.d/ssh restart</em>

You then need to reboot your firewall, and you should be good to go.

 Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th-century manuscript of poems by Virgil.

Switching Network Configurations with netsh

When I use wi-fi at at the coffee shop, I have to set up my laptop to use a dynamic IP address. When I am home, I like to use a static IP address. Going back and forth can be kind of a hassle. I used to have to change it by hand every time. I thought there must be a better way.  (I am not much of a networking expert, and setting up DHCP for one machine seemed like a bit of a hassle.)

I did some searching, and I found out about a tool on Windows called netsh. There is a very long page about is at Microsoft’s site, and a page at Wikipedia. You could make the changes in the GUI, and run the command netsh dump > $SOME_FILE_NAME to put them into a file, and later run netsh exec $SOME_FILE_NAME to set the interfaces.

I did a little bit of messing around, and I figured out all the commands I need to change back and forth. I put them in a text file, and I just copy and paste them into a DOS window when I need to.

To use a dynamic address:

netsh interface ip set address name="Local Area Connection" source=dhcp
netsh interface ip set dns name="Local Area Connection" source=dhcp register=PRIMARY
netsh interface ip set wins name="Local Area Connection" source=dhcp

To use a static address at home:

netsh interface ip set address name="Local Area Connection" source=static addr=192.168.1.7 mask=255.255.255.0
netsh interface ip set address name="Local Area Connection" gateway=192.168.1.3 gwmetric=0
netsh interface ip set dns name="Local Area Connection" source=static addr=192.168.1.3 register=PRIMARY
netsh interface ip add dns name="Local Area Connection" addr=192.168.1.5 index=2
netsh interface ip set wins name="Local Area Connection" source=static addr=none

 Image from Wikimedia, assumed allowed under Fair Use. Image from the Roman Vergil, a 5th-century manuscript of poems by Virgil.