Almost anywhere you go on the internet, they are following you, building
a profile on you, and selling that information, your information,
to the highest bidder. Even if you don't have a user account for google
or facebook "services," they've built a profile of you using this
surreptitiously collected data.
It turns out there are some steps one can take to prevent these
companies from following you wherever you go. It's not perfect, but it
helps a lot. First, don't use Chrome. Second, install ad-blocker plugins
for your browser. Third, use your firewall.
It turns out Google and Facebook are large enough that they have their
own Autonomous Systems (AS) composed of numerous subnets. Google owns AS
15169, while Facebook owns AS 32934. Using a little bit of shell, it's
relatively easy to look up all the subnets owned by these companies.
That's a lot of subnets. Because I have different operating systems on
different computers and still want to block traffic to and from
all those IP addresses, I've written some simple scripts to add
rules to various firewalls. I have scripts for IPFW on FreeBSD, IPTables on Linux, and the Windows Firewall that should work from XP SP3
through Windows 10. I've only tested it on Windows 7 and Windows 10, and
it worked in those.
All of these scripts can be found in this
directory. The IPFW and IPTables scripts are self-contained. For the
Windows command shell batch files, the *ips.txt files are also needed.
I have to say, the internet looks very different with these firewall
rules in place. There are noticeably fewer advertisements and pages load
faster. Embedded YouTube videos and Instagram photos don't appear.
Sometimes the frame disappears, sometimes you get a "failed to connect"
page appearing in a frame in the middle of a page. (Yes, these rules
block YouTube and Instagram; they are owned by google and facebook and
reside in the subnets owned by those companies.) On a relatively rare
occasion, I come across a site using some sort of javascript or css or
something hosted by a machine in one of those ASs and that will be
blocked. Sometimes the site handles that gracefully, sometimes it stops
being functional. A small price to take back your life.
Update: Twitter has trackers on a decent amount of sites out there too,
so I've added scripts to block Twitter's AS 13414 as well. Those scripts
are in the same directories as the others.
New PGP Key!
So apparently Evil32 happened.
Approximately 24,000 PGP keys were generated that had collisions with
the 32-bit short IDs of existing keys. Then someone decided to use those
conflicting keys to generate revocation certificates and upload them to
the keyservers. Joy.
Though my old keys still work, they were affected by this mass
revocation of collsions. I have created a new key which can be found at
http://skinnymf.com/~mforde/mforde.asc.
On a related note, if anyone is interested in Key Signing Party, shoot
me an email. I haven't been to one of those since college.
[/musings]
permanent link
I suppose I've posted this for two reasons. The first is so I have a
record of how I eventually got these little things working in case I
have to do it again. The second is in case anyone has similar issues
with their hardware; if they happen to stumble upon this, it might give
them some hints.
[/unix]
permanent link
*Simple design from the early days of the world-wide-interwebbings, and mobile friendly!
Powered by Blosxom.
Eponymous
Eponymous
About
My Infrequently Updated Blog. The web-based journal of M. Forde, computer nerd, endurance athlete, and DeLorean owner
The Truth is Out There
Tonight, I had the great fortune of joining a person who means the
world to me at a book signing by Gillian Anderson and her co-author Jeff
Rovin. Jeff has ghost-written/co-written several novels for and with Tom
Clancy, and Gillian is AGENT DANA SCULLY!!!
Gillian indicated that she modeled the main character as someone she
would play in a cinematic version of the story, and Jeff mentions that,
while not required reading, the novel is a spiritual sequel to Edgar
Allan Poe's only novel, The Narrative of Arthur Gordon Pym of
Nantucket.
I'm going to put The Crytptonomicon on the back burner and put
Poe's work and this new novel, A Vision of Fire at the front of
my priority queue.
Fun little alias
I use a console based RSS reader written in Ruby. It crashes often and
will delete my list of feeds in the process. It also has a tendency to
not fully exit, leaving a ruby process sitting in the background soaking
up close to 100% CPU time. For such occasions, I've added the following
alias to my .cshrc file.
Tenth Runniversary
Today is my tenth runniversary. It's been a decade since I first stepped
on that treadmill. Like my first day running, I ran on
the treadmill while listening to br\oken.
I've had some set backs in my recovery. Not properly rehabilitating the
atrophy in the left leg has caused some problems with the muscles around
my hip. Listening to my trainer only made it worse.
But now I'm taking care of it properly.
Like that first day ten years ago, I have a goal I am working toward.
This time it is the Dublin Marathon in October. This will be marathon
number 13. I don't expect to PR. I think 10 minute miles are a much more
reasonable goal at this point, but frankly I'll be happy just to cross
that finish line.
It's been a long, hard road out of Hell, but God has been by my side and
put some amazing people in my life to help me along the way.
I have to thank the Giraffes for today. I have to thank the Giraffes for
much of my life this last decade. I was heading for an early grave, and
they changed that. Giraffes, I thank you from the bottom of my heart and
I look forward to running the LTC and many other races with you in the
next decade.
Take back your privacy
Recent surveys have found that 76% of [the most visited] websites in the
world cotain trackers from google and 24% contain trackers from
facebook. This has been reported by CNBC,
PC
World, The
Verge, Fortune,
and Breitbart.
Almost anywhere you go on the internet, they are following you, building
a profile on you, and selling that information, your information,
to the highest bidder. Even if you don't have a user account for google
or facebook "services," they've built a profile of you using this
surreptitiously collected data.
It turns out there are some steps one can take to prevent these
companies from following you wherever you go. It's not perfect, but it
helps a lot. First, don't use Chrome. Second, install ad-blocker plugins
for your browser. Third, use your firewall.
It turns out Google and Facebook are large enough that they have their
own Autonomous Systems (AS) composed of numerous subnets. Google owns AS
15169, while Facebook owns AS 32934. Using a little bit of shell, it's
relatively easy to look up all the subnets owned by these companies.
That's a lot of subnets. Because I have different operating systems on
different computers and still want to block traffic to and from
all those IP addresses, I've written some simple scripts to add
rules to various firewalls. I have scripts for IPFW on FreeBSD, IPTables on Linux, and the Windows Firewall that should work from XP SP3
through Windows 10. I've only tested it on Windows 7 and Windows 10, and
it worked in those.
All of these scripts can be found in this
directory. The IPFW and IPTables scripts are self-contained. For the
Windows command shell batch files, the *ips.txt files are also needed.
I have to say, the internet looks very different with these firewall
rules in place. There are noticeably fewer advertisements and pages load
faster. Embedded YouTube videos and Instagram photos don't appear.
Sometimes the frame disappears, sometimes you get a "failed to connect"
page appearing in a frame in the middle of a page. (Yes, these rules
block YouTube and Instagram; they are owned by google and facebook and
reside in the subnets owned by those companies.) On a relatively rare
occasion, I come across a site using some sort of javascript or css or
something hosted by a machine in one of those ASs and that will be
blocked. Sometimes the site handles that gracefully, sometimes it stops
being functional. A small price to take back your life.
Update: Twitter has trackers on a decent amount of sites out there too,
so I've added scripts to block Twitter's AS 13414 as well. Those scripts
are in the same directories as the others.
Race Against Crime and Drugs
The Hoboken Race Against Crime and Drugs is tonight. Online entry is
closed but race day registration should be open this evening for anyone
who wants to run and hasn't signed up. The race starts at 7PM on Pier A.
The Giraffes are splitting into three subspecies for tonight's race. We
have three three-person teams running with a little friendly competition
going on. I hope I don't let my sub-team down tonight.
I'm not feeling very fast. In fact, my right calf is still sore from the
speed work I did at the track yesterday. I ended up doing about seven
and a half miles of intervals and sprints over the course of about an
hour.
Hopefully it won't be too bad once I get warmed up. The 5K course in
Hoboken is fairly fun; flat and alongside the Hudson River for most of
the way.
Merry Christmas
While the holidays are supposed to be a joyous time, I know and
understand how hard they can be for some people. If you're having a
rough time over the next week or so and need someone to talk to, feel
free to message me. If you're reading this blog, you likely know my
email address or phone number.
Thoughts on National Computer Science Education Week
This week is apparently National Computer Science Education Week.
Code.org is organizing the "hour of code"
to promote teaching of Computer Science and Programming in schools.
They're also organizing petitions to make CS courses count as credits in
Mathematics or Science for High School graduation requirements.
In High School, my CS courses were by far my favorites, Programming in
Pascal, AP Comp Sci in Pascal, Programming in C++, and AP Comp Sci in C++ (
the language for the exam switched my junior year). I learned a lot
about structured code, elegant, efficient code. I learned enough about
Data Structures and Algorithms that I didn't have to study for my
college CS classes until Computational Structures (Discrete Math II with
Scheme, essentially) in my third semester. I had an amazing Computer
Science teacher who also taught me Calculus and the proper order of
precedence in life: God, Family, Math. I wouldn't be where I am today
without that educational opportunity I had in High School. I want others
to have that opportunity too.
However, this is where I differ with the opinion of the Code.org folks.
I do not believe that CS classes should count toward the Math or Science
requirements. In this state, CS counts toward the "practical or
performing art" requirements, I'm assuming under the "practical" label.
I think this is a better place for it at the High School level.
Computer Science is not a hard Science. It's not Physics. It's
not Biology. It's not Chemistry. There's a saying that if the subject
has science in its name, it's not really a science. That is true with
Computer Science. It's not studying the how and why of atoms, of
molecules, of living systems, of anything really. It's not science.
Computer Science is really applied mathematics. I am very fortunate that
the college program I went through was very strong in mathematics: Calc
I and II, Linear (Matrix) Algebra, Discrete Math, Discrete Math II in
the guise of Computational Structures, Probability and Statistics,
Theory of Computation, Algorithmic Analysis... the list goes on. All of
these mathematical foundations were then applied to a machine, to make
the machine carry out a task in an efficient manner. It's those
mathematical foundations that are the true core of Computer Science.
While mathematics is the core of Computer Science and Computer Science
is essentially applied mathematics, I do not believe it should count
toward the Math requirements. The CS classes would likely detract
from other mathematics courses such as Geometry, Trigonometry, and
Calculus. These courses are far too important to an education to be
replaced by a Computer Science course. Many, maybe even most, High
School Computer Science courses focus more on "programming" than the
fundamental mathematical theories. They will pick the language du jour
and teach you the syntax and semantics. They'll teach about basic data
structures like arrays, and linked lists. The AP exam currently focuses
not on implementing lists, trees, stacks, queues, and sorting and searching
algorithms, but on arrays and lists using Java library calls. This is
not math. This is learning Java syntax.
From the man page for setsockopt: "The include file <sys/socket.h>
contains definitions for socket level options, described below."
1) The options are not "described below."
2) No, that file actually doesn't contain those definitions.
On the other hand... The FreeBSD man page for setsockopt does actually
describe the options and under FreeBSD the <sys/socket.h> file does
indeed contain the definitions.
First the background. The story of how I got into this mess:
I'm trying to get ACPI working on my laptop under FreeBSD. Specifically,
I'm trying to get Resume to work properly. Suspend works, and resume
seems to partially work. The fans spin up, the keyboard's backlight
comes back on, but no screen. And without video, it's a little hard to
figure out what's going on.
ACPI works great on my server. It's running the same FreeBSD 9.1 x86-64
build that the laptop is, but the biggest difference is that it's an
intel motherboard. The laptop is an Alienware, for our purposes, I might
as well just call it a Dell.
I started comparing the ASL output from both machines and noticed some
things. First, the Alienware's ACPI implementation looks for the OS to
be various forms of Windows or "Linux." The intel ACPI implementation
also looks for these Windows variants and "Linux" but it has an
additional OS string. It has an entry for "FreeBSD."
I figured the easiest next step was to use iasl co compile the intel ASL
source and load that DSDT onto the laptop.
I calculated the odds it would work vs the odds I was doing something
incredibly stupid... and I went ahead and did it anyway...
I compiled the asl and I set /boot/loader.conf to override the DSDT with
the intel one I had just compiled and I rebooted. At first everything
was good. The machine went down, I got the boot loader, and the FreeBSD
kernel started to load. Seconds into the kernel load, it rebooted
itself. After the second time, I powered off and tried a cold boot. Same
problem just as I had feared.
Now i was in a situation where I couldn't successfully boot because of
an error in loader.conf I needed to find a way to edit it.
And here's the solution:
The FreeBSD bootloader, like many others, works in stages. At a certain
point, it can be interrupted at which point it provides a set of simple
yet powerful commands to control various aspects of the loading process.
If you still have that default menu at load, I beleive the option to
chose is 6. I disable that menu so during a brief countdown I hit escape
before the boot loader turns control over to the kernel.
Once in the boot loader prompt, I entered the following commands:
unload
load kernel
boot
Pretty simple right? The unload command does what it says, it unloads
the kernel and any modules loader.conf had pulled into memory. The load
kernel command grabs the kernel and loads it into memory... but only
the kernel thus ignoring the broken DSDT in loader.conf. And of course
boot tells the boot loader to continue booting the system.
Once booted, I removed the bad DSDT from loader.conf.
I thought I had healed from the chafing left after Saturday's River to
Sea Relay... Until I ran in the rain yesterday. To quote a friend, "It
feels like someone took a cheese grater to my crotch."
Windows 8.1 in Virtual Box
I was attempting to run the Windows 8.1 Preview in a VM using
Sun's Oracle's Virtual Box on a Windows 7
host. I ran into a minor problem.
The OS wouldn't boot. I received an error stating:
Your computer needs to restart.
Please hold down the power button.
Error Code: 0x000000C4
Parameters:
[redacted]
Looking for the error code online led me to this
article describing the issue and a fix. The key to fixing this was
running the command:
Excluding directories while using pax(1)
My primary disk is failing. There are large segments that are generating
low level IO errors during read or write operations. Most of the files
written to the bad area were under /usr/ports/ where the FreeBSD Ports
collection is installed. A few files were under the web server's root.
Figuring I'd take care of things prior to the disk actually failing to
the point of it being irrecoverable, I purchased a new disk early. I
installed it, partitioned it, and formatted it.
To copy the data over, ignoring the areas that were causing the IO
errors, I used mv to "move" the files from the web root under /usr/ports
and used the following command as root:
The -X prevents pax from traversing into mount points that have a
different device ID than the one on which it was started. This prevents
an infinitely recursive loop from happening when the new disk's mount
point would have been hit. It also prevents data on the non-failing
disks from being copied as well.
the -s option allows for sed search and replace scripts to be run. In
this example, the : is used as the delimiter and any path matching
/usr/ports/* is replaced by a null string. With this replacement all
directories under /usr/ports are excluded from the copy.
Senator Elbert Guillory Elbert Guillory, a state
senator in Louisiana, has switched his party affiliation from Democrat
to Republican. This website
has a short commentary on the matter, as well as an embedded video of
Senator Guillory explaining his decision.
Remapping Keys in Vim
While I love the keyboard on my relatively new Dell M4800, I'm not
particularly fond of the placement of the Page Up and Page Down keys to
the left and right of the Up arrow, and above the Left and Right arrow
keys. I find myself accidently hitting those keys too frequently while
editing code and jumping all over the file.
So I remapped them. It was quite simple, because Vim is awesome. I added
the following lines to my .vimrc file:
map <PageUp> <Up>
map <PageDown> <Down>
This turns Page Up into a second Up arrow, and Page Down into a second
Down arrow. For now, I'll leave it like that. I may remap them to the
Left and Right arrows in the future. Or not.
New Vernon Coach and Motor Works is Awesome
For as long as I've been a DeLorean owner, I've been taking the car to
New Vernon Coach and Motor Works. They have always been professional
and courteous, and they have always done top-notch work. I highly
recommend them.
That gives you 15 seconds before the virtual machine launches the boot
loader, giving you plenty of time to do things like change the boot
order so you start from a recovery CD.
Merry Christmas
While the holidays are supposed to be a joyous time, I know and
understand how hard they can be for some people. If you're having a
rough time over the next week or so and need someone to talk to, feel
free to message me. If you're reading this blog, you likely know my
email address or phone number.
Happy Birthday Aisling!!!!
My DeLorean, #5333, was built in October of 1981. This month, the car
will be 35 years old and she looks and handles like the day she came off
the assembly line.
Don't Call it a Comeback
On June fourth, I was running in the Tourne on a trail I first ran
twenty years ago, a trail I've run hundreds if not thousands of times
before. On that morning, my foot came down on a wet rock at just the
wrong angle, slipped just enough and I rolled my ankle. Not only did I
roll the joint, I came down on it with enough force to break it; a fact
I would learn when I final saw a doctor about it on June ninth.
No surgery was required, but I was unable to run for three months. I was
finally cleared to run. The plan was to start with short distances,
about a quarter mile, on a rubberized track then build up from there,
moving on to treadmills and eventually roads and trails. I was
instructed to spend six months rebuilding my 60 mile per week base.
On the morning of September 11 (a day I will never forget and a morning
that will always make me feel a bit uneasy), I took to the track for the
first time. I started by walking a mile. As I finished the fourth lap, I
said a prayer, asking God to give me the run I needed and the wisdom to
know when to stop. I queued up my playlist: AC\DC's "Back in Black" and
LL Cool J's "Mama Said Knock You Out." I took my first stride.
I've been progressing well in the last two weeks; pushing it on some
days, resting when necessary. Though the short, slow distances have been
frustrating, it feel good to be running again. Every stride I take I'm
reminded of everything I love about the sport.
Fun Conversations
The DeLorean often leads to conversations one wouldn't normally expect.
Case in point: today I had to call my auto insurance provider for an
issue with my daily driver. After taking some info to pull up my account
the conversation went something like this:
Agent: Which car is this?
Me: The Pontiac.
Agent: Am I reading this right?
Me: Reading what?
Agent: I'm sorry, do you have a DeLorean?
Me: Yes.
Agent: I never thought I'd see someone with a policy on a DeLorean.
Me: Well, you've insured both of mine...
Agent: You've had two DeLoreans?
Me: Yes.
At that point there were a few more questions and then we got back to
the issue which my phone call had been about originally.
X11 Mouse Cursor Themes
Starting after installimg the binary nvidia drivers on both my laptop
(Quadro K1100M) and my workstation (GeForce GT 630) Blackbox was
defaulting to a mouse cursor that was suboptimal, a black, notched
triangle.
The settings in the Xresources for the mouse cursor theme are honored by
XDM at the graphical log in, but when Blackbox or Fluxbox start, the
cursor would change to the black notched triangle. TWM honors the
settings in Xresources, but TWM is just a little too minimalist, even for
me.
But there's a simple fix!
Create a file in your home directory (if it doesn't already exist)
.icons/default/index.theme. In this file, add the following lines:
[Icon Theme]
Inherits = polarblue
where polarblue is the name of the X11 mouse cursor theme you wish to
use. FreeBSD installs many of the X11 cursor sets into
/usr/local/lib/X11/icons/, your Unix flavor may be different. In theory,
you can also install new themes of your choosing into ~/.icons/ and use
those without the need for any elevated privileges.
Additionally, there's the option of creating a .Xdefaults file in the
home directory and adding the line
Xcursor.theme: polarblue
Again, where polarblue is the name of theme you want to use.
FreeBSD Unix on Dell Precision M4800
I installed FreeBSD 10.3 on the laptop I recently acquired and
almost eveything worked out of the box. The gigabit ethernet and
wi-fi coards worked fine and by setting the BIOS to discrete graphics
only, the nVidia Quadro was recognized.
I installed the binary driver from nVidia, because they support FreeBSD
because they're awesome like that. The nvidia-xconfig(1) program was
useful to streamline the process of getting X.org to use the Quadro.
There were a few things that did need some tewaking though. First
there's the sound card. Because the quadro supports HDMI (in addition to
VGA and DisplayPort), it includes an HDA-compliant sound card. This card
is recognized before the primary HDA-compliant sound card in the
machine, the one that's actually connected to the speakers.
I did some research and there were some suggestions about using
sysctl(8) to control soundcard GPIO pins to connect the nVidia sound
device to the speackers but what ultimately worked was using sysctl(8)
to change the default primary sound device to the dedicated card. There
were a few ways to make this happen but the one I found that actually
worked was to place sysctl(8) command lines in /etc/rc.local.
Now when boot completes pcm2 is set to my default and sound "just
works" and sndstat shows pcm2 as the default.
I found ACPI support has some weirdness as ACPI support often does. What
I found was that Suspend works from console, but resume doesn't...
HOWEVER After I start X ACPI suspend and resume work just
fine. Normally I prefer to boot into a console and only start X if I
really need it, but because I want suspend and resume to work "by
default" I've enabled X to start at boot by allowing the xdm console in
/etc/ttys.
But this had one last issue. See, when manually starting X, I added the
-dpi 143 option to get graphics and text to be appropriately sized for
my screen. XDM needed to know about this.
This probably wasn't the best place to do it, but I edited
/usr/local/lib/X11/xdm/XServers and modified the call to X(7) to add the
-dpi 143 option. Now when Xdm loads at start up, the DPI is set
correctly.
The function keys for adjusting the screen brightness don't work;
however, xbacklight(1) works just fine. Similarly the volume keys don't
work but I can adjust the volume quite easily with aumix(1).
I've submitted my dmesg output to NYCBUG's
dmesgd repository.
I suppose I've posted this for two reasons. The first is so I have a
record of how I eventually got these little things working in case I
have to do it again. The second is in case anyone has similar issues
with their hardware; if they happen to stumble upon this, it might give
them some hints.
Megapath sucks
Speakeasy was by far the best ISP I ever dealt with. Freindly, and above
all, knowledgeable. Since they have been purchased by
Megapath then merged into Global Capacity, their tech support has been,
frankly a bunch of idiots. Furthermore, their website routinely has
"Service failed" errors that prevent you from logging in, changing
passwords, and viewing account information.
Today, after being unable to log in to the website due to "service
failed" the tech support rep on the phoned didn't understand what a
subnet mask or gateway address were. Eventually I just got her to read
me "all three IP addresses" on the screen in front of her.
But at this point my only other option is Verizon. So I'm sticking with
Megapath.
Remapping Keys in Vim
While I love the keyboard on my relatively new Dell M4800, I'm not
particularly fond of the placement of the Page Up and Page Down keys to
the left and right of the Up arrow, and above the Left and Right arrow
keys. I find myself accidently hitting those keys too frequently while
editing code and jumping all over the file.
So I remapped them. It was quite simple, because Vim is awesome. I added
the following lines to my .vimrc file:
map <PageUp> <Up>
map <PageDown> <Down>
This turns Page Up into a second Up arrow, and Page Down into a second
Down arrow. For now, I'll leave it like that. I may remap them to the
Left and Right arrows in the future. Or not.
New Vernon Coach and Motor Works is Awesome
For as long as I've been a DeLorean owner, I've been taking the car to
New Vernon Coach and Motor Works. They have always been professional
and courteous, and they have always done top-notch work. I highly
recommend them.
That gives you 15 seconds before the virtual machine launches the boot
loader, giving you plenty of time to do things like change the boot
order so you start from a recovery CD.
Prince
I'll never forget the day I started liking Prince's music. I was with my
friend in his car headed somewhere. We were listening to K-Rock and they
had a "listener playlist" where for about an hour, all the music had
been selected by a listener and this listener was on the phone, talking
with the DJ about his selections and introducing songs.
The guy announced that the next song was from Prince. The DJ questioned
this selection and he said, "No, this dude can shred. Just listen."
It's been a while...
It's been a while since I've had a substantial update here. I've been
busy living life leaving little time to be writing about it; at least
writing about it here.
Work has been quite busy for a while now. Lots of projects, lots of
deadlines, lots of extra hours. But there hasn't been any "mandatory
seven day work weeks" like I had at that one job, and there isn't that
expectation of "you can work from home so you are always expected to be
working" I had at the last job. Plus, the work is a lot more interesting
than anything I've done in years.
Bernstein was right: money doesn't motivate me, interesting problems and
the ability to tinker do.
Yesterday the DeLorean rolled over to 16,000 miles. That's still about
1,000 miles a year I'm putting on it. I'd like to keep the mileage low,
but she's just so much fun to drive. I've been asked by people at work
to bring Aisling next week for Bring Your Child to Work Day. Apparently
a lot of my co-workers have told their kids about the car and they want
to see it.
I ran my 29th half-marathon this past weekend. I'd like to get up to 32
this year. I'm also signed up for my 13th marathon this Autumn. I'm
considering running number 14 a few weeks later.
In addition to all of that taking up my time, I've also been
volunteering with the Youth Ministry at a church in my diocese. That's
been quite an amazing adventure. It's had a profound impact on my life
and has certainly helped at least a few teens. It's been an honor to do
the Lord's work. Maybe someday I'll publish some of the talks I've
given. The In His Image talk seems to have resonated with a lot
of people, certainly more so than some of the other talks.