So this has been a bleak year for internet freedom. ACTA, SOPA, PIPA, and in Canada Bill C30. Everyone’s angry, but what are we doing about it? Sharing links on facebook? Signing petitions. It is clearly not enough. It’s barely anything. Meanwhile, the oposition is pouring tanks of money onto the battle. They can afford to do so because they are rich, rich off us no less. But we have the advantage of vastly out numbering them. So let’s do something to actually be heard. We have agents of our own, and if we can help them, we should. So to that end I’ve donated to the following:
The Electronic Frontier Foundation: To help fight against SOPA and PIPA and what comes next in the States, because it’s effects will be felt up here too.
Open Media .ca: A Canadian organization supporting a free internet. Today they are even having a donate and be matched by Acanac drive, so what ever you donate will count double!
All in all I may not have lots, but I have some to spare, and you may have even less, but if you can spare even $10, spend a bit to help fight for our free internet.
Just a note: I’ve now been running mindstab.net for 10 years. It’s been a long ride since I started on a 486 in my bedroom, but there’s lots more to come! Just thought I’d take a moment to mark the occasion.
Finding “lost” computers on the web the homebrew way
During the course of updating my home computer I rebooted it because of a kernel update. Later that week at work I went to connect to my home computer and discovered that it’s dynamic IP had changed and it’s DNS name was invalid.
So following common advice to “fix a problem two ways to prevent it in the future” I fixed the DNS, but I also wanted an automated way to track my computers when and if their IPs changed.
So the first thing I needed was shared place to store the IP information. Thinking about it I realized that Dropbox would work well for that. So all I needed was a simple script.
So the solution was to put a script that determined the IP of the computer in Dropbox and have cron on all the computers run it. Each user can call cron with
$ crontab -e
And I created a crontab directory that I could add more scripts to later if need be with and run them hourly with the following entry
0****cd/home/dan &&run-parts Dropbox/cron
The script itself was a file called getip and it used whatsmyip.com’s automation detection script.
Then I just created Dropbox/var/log and installed the crontab on all my computers, and volia, homebrew IP tracking for all my compters accessible to me from anywhere.
So starting around October last year Stanford started the first few of its free online geared classes. I successful took and completed and passed the Artificial Intelligence class and the Machine Learning class. That, coupled with full time work, pretty much left me with no time for anything else. I was crazy busy for that 10 weeks but I learned a bunch and it was fun. Over the winter break, even though I’ve been busy, I’ve more or less recovered, and just in time, because in a few weeks a whole new batch of free online classes will be kicking off. I’m going to see if it’ll be feasible for me to do 3 this time, but I might have to settle for 2. So If I vanish against for another 10 weeks, that’ll be why.
This stuff is amazing and a lot of it simply isn’t available at the university I went to, so to have it now for free is a pretty big opportunity so I’m eager to cram in as much as I can before it goes for pay (it has the feel of a beta/demo that will go that way once material is built up and kinks worked out).
A coworker just got a new box and tried a fresh Ubuntu 11.10 install (the rest of us have stayed safely with 10.04). He found this link and after looking through it I definitely wanted to save it for later if I need it:
A whole list of commands to get rid of global menus, modify all kinda of Unity WM behavior and Gnome 3 behavior (like get screensavers back) and even how to install Gnome Shell on Ubuntu and tweak that. Looks like a great collection for anyone underwhelmed by Ubuntu 11.10′s default offerings.
About 3 weeks ago Lennart Poettering posted A Plumber’s Wish List for Linux to his blog, which is one of the many Linux related blogs I read. Included on that list was a request to “expose CAP_LAST_CAP somehow in the running kernel at runtime”.
Now I’d never contributed to the Linux kernel before, but in college we had hacked on the Minix kernel to extend it and in University we had written our own kernel and implemented virtual memory, task switching, message passing and preemptive processes; so I was at least familiar and comfortable with kernel level development. Looking at this task, I immediately thought, “hey, that is totally within my capabilities and I can probably squeeze it into my schedule”.
So I did. I checked out the latest copy of the torvalds Linux repository and implemented the feature. The actual implementation didn’t take too long. Mostly looking for the right place. What did take a day or two was getting up to speed on Linux coding practices and patch submission protocol and procedure. They have a good process in place and it’s best not to step on toes so I did my research as best I could. When I was ready I sent in my patch.
Andrew Morton picked it up, asked for a few enhancements, and those submitted, added it to his -mm tree for testing. Then a few weeks later Linux 3.1 launched and the new merge window opened and today Andrew submitted his diff from the -mm branch including my patch to Linus and it was merged to his tree!
I am now a Linux kernel contributor. I have a small piece of code in the Linux kernel that will ship with 3.2. It’s not huge, but I did it, and that gives me a real sense of pleasure and accomplishment. Thanks to all who helped!
Well, aside from being pretty busy with work, I spent some more time playing with OpenGL and Lisp. I took my demo test of a spinning diamond up to the beginnings of a space flight sim. Now we have a ship that has a thruster that applies forward thrust, there is the beginnings of physics. The next logical step would be to add turning, but I wanted to do it with physics, which meant writing torque code and that’s about where I got side tracked and have stopped for the moment. Not super interesting yet, but not bad for someone who has never done 3D programming before. The code is at https://github.com/dballard/flight-sim.
I then got distracted by the idea of a checkers AI by a few articles I read in August. I decided to dust off my Ruby and give that a go but it didn’t get too far before I realized that I was going to have to get side tracked from search in to aggressive pruning and heuristics. I was satisfied with the project even though it doesn’t really play because at it renewed me Ruby which had been shelved since some time last year and reminded me that search of this kind is bloody hard. The code is at https://github.com/dballard/checkers. It can simulate a full game to any depth if you have the time. If you have less than days or years per turn, it’s pretty much no good.
Now I’m getting further distracted by a few ideas in different directions yet again and I’m starting the Stanford AI class and Machine Learning class that they are offering online for free on monday. That should keep me pretty much tied up until years end and I’m looking forward to it all!
Also thanks to my Kobo Touch eReader I’ve been reading a ton, which is nice. I may have to give up my pace of a book every week or two for the next month or two to keep up with the new classes, we shall see.
Is Printing A Gun The Same As Buying A Gun? An article on people starting to get around gun registries and gun purchasing laws by printing guns or gun components with 3D printers