I'm not buying these.
Searching for nitrile gloves on Amazon. Won't buy these.
Searching for nitrile gloves on Amazon. Won't buy these.
I know better than to look at graphs in my local paper. They use them like illuminated initials or other works of the rubricator. Everyone knows it isn't a 21st century newspaper article until you've rubricated.
But today I received this treat…
Clearly the reds beat the blues in the senate, their column is longer. Except the numbers say the left side has 51, so maybe the blues won. And why is there a blue hiding in the red column with the pales and the zinc chromate green party? And there are only 50 dots on the blue side, not 51.
I think I see where they were heading. The 50 and the gray line provide a clue. The gray line marks the center line, so they are trying to show a tipping point for party line voting. I have no idea why they chose a different horizontal dimension to distort the data on the Senate and Governor tables.
As far as I know there is no mechanism for governors to party line vote amongst themselves, so that middle line is meaningless.
A little dragging about in Preview fixes the quantitative visualization for them… … the voting governors issue is irreparable. I should have reordered to put the winning party fill beginning in the upper left for House and Governor, but that's more clicking and dragging than I feel like this morning.
One of the special priveleges of coding alone…
At the end of a two hour debugging session where somehow a nearly valid pointer was showing up in an IO call back routine in a multithreaded C program I found this comment…
// ### NEEDS WORK
… and I really don’t get to blame anyone else.
I was right though. It did need work.
AT&T woke me up at 4:42am this morning to tell me that they were going to give lists of all my phone calls, who I talk to, and which web sites I visit and when to a broad list of marketing companies so that those companies could try to sell me things.
This afternoon I went to AT&T and asked for them to disable their locks from my iPhone so I could use it while out of the country. They refused since I still had a few days left in my contract with them. I was clear that I wasn’t leaving the contract, this would cost AT&T nothing. They refused.
So let’s try to opt out of CPNI:
• Link in email, wants the account id and zip code. Does not work. Account is now locked and won’t unlock. It suggests I click on a “chat” button of which there is none on the page. (This may be because I had to change the account billing zip code to my daughter’s residence to enable her femtocell.)
• The CPNI opt out page suggests I get my account number from the email. The email does not contain my account number because they replaced most of it with “x”s.
• Find my account number on an old bill…
We’re Having Trouble Processing Your CPNI Request You can still make your request by phone. Please call a representative at 1-800-288-2020.
• Call the 800 number, navigate the voice robot to be told “This office is now closed, please call during normal business hours.” No hint what those might be.
• Try to 800 number automated system. This one worked! It took three tries to get the account number in, it doesn’t like pauses while you look for the next few digits, but it did work. Maybe. There is no apparent way to see if you are actually opted in or out.
They could have just included a working link, with a unique identifier, in the opt out notification email and saved me 20 minutes. But they also could have not woken me up early on Sunday morning with their email too. They just aren’t that kind of company.
I’m not sure where this cropped up, I leaped many kernel versions, but when one of my LXC based virtual machines suddenly was unable to start machines after a kernel upgrade, the error presented like this:
root@cloud8:\~\# lxc-start -n rattus
lxc-start: Invalid argument - failed to create
'/sys/fs/cgroup//lxc/rattus' directory
lxc-start: failed to spawn 'rattus' lxc-start: No such file or directory
- failed to remove cgroup '/sys/fs/cgroup//lxc/rattus'
Further probing revealed that I could mkdir
a subdirectory (like lxc
in the above example) in my cgroup filesystem, but not a second level
subdirectory (like rattus
) within the first one.
After a bit of adding printk()
calls to the kernel and rebooting, it
turned out that the Network Priority cgroup (CONFIG_NETPRIO_CGROUP)
was the problem. Turning that off fixed my woes.
Further poking about suggests this check in netprio_cgroup.c is probably to blame, but I don’t understand what prioidx is, so I leave it here.
if (cgrp->parent && cgrp_netprio_state(cgrp->parent)->prioidx) {
kfree(cs);
return ERR_PTR(-EINVAL);
}
I fervently hope that Google brings you this search result in a timely manner.
CATransform3D is a row major matrix. When they say “m23”, they mean row 2, column 3.
GLKMatrix4 is a column major matrix. When they say “m23”, they mean row 3, column 2.
This means they are NOT laid out the same in memory, their initializers are acceptable to one another but incompatible, and if you called GLKMatrix4Make(…) with row major thoughts in your head, you will be very sad after you later call GLKMatrix4Multiply.
The people who write documentation, and perhaps mathematicians, don’t like to sully their hands with details like row major and column major, after all rows and columns are simply logical fictions. (You can’t actually tell what CATransform3D thinks is a row or column until you do a multiply, but GLKit has some functions with Row and Column in the name.)
Programmers, who might like their OpenGL view to display something do care.
You can get it wrong and not notice, except for a nagging feeling that all your matrix multiplications ( CATransform3dConcat or GLKMatrix4Multiply) are backwards. The other operations are happy to work transposed.
The OpenGL Profiler in Xcode 4.3 is known to be ruined for 10.7.3. Apple suggests you get the one from Xcode 4.2.1.
Here are the steps they may not have mentioned:
mkdir ~/Desktop/xcode
cd ~/Desktop/xcode
xar -x -v -f "/Volumes/Install Xcode/InstallXcodeLion.pkg" # archive layer 1
cd InstallXcodeLion.pkg/
cpio -i -t < Payload # archive layer 2
cd "Applications/Install Xcode.app/Contents/Resources/Packages"
xar -x -f OpenGLApps.pkg # archive layer 3
gunzip < Payload > Payload.big # silent compression
cpio -i < Payload.big # archive layer 4
cd "Applications/Graphics Tools"
ls "OpenGL Profiler" # Hurray!
Just before the last step, you should remember that you have Time Machine and just go back a couple weeks and snag the one from /Developer. That’s what I did, but I thought I’d finish the instructions in case you didn’t have one.
It still crashes my program in some profiler function when I attach, so nothing gained, and doesn’t ever start profiling if I launch, but maybe it will help you.
Let’s say you have a Debian Squeeze based gateway machine and your ISP wasn’t reading ahead far enough in the RFCs to get to the IPv6 chapter.
Don’t let that hold you back, you can go to IPV6 without your ISP.
What we are going to do is use a little thing called 6to4 to make your only little bubble of the IPv6 internet and stitch it to the rest of IPv6 land with your existing IPv4 connection.
2002:dead:beef::1
. Notice that ‘::‘? That is IPv6
for “all the 16 bit blocks between here are zero”./etc/network/interfaces
file to add this interface:ifup tun6to4
ping6 ipv6.google.com
auto tun6to4
to your /etc/network/interfaces
Well that was easy. If you are a single machine you could be done.
But let’s say you are a gateway and you want to provide access to all of the machines behind you…
ip route add YOUR-FIRST-THREE-PARTS:1101::/64 dev eth0
I have no idea why. If you see
Dead loop on virtual device tun6to4, fix it urgently!
in your syslog, you forgot this step.That was also easy. Now you need to advertise the IPv6 network so clients can use it.
aptitude install radvd
(route advertiser. It won’t start without
a config)echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
to make it
happen without a reboot.Create your /etc/radvd.conf file, something like this should work…
~~~~~~~~
interface eth1 <<<<<< make that your network device {
AdvSendAdvert on;
prefix YOUR-FIRST-THREE-PARTS:1101::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; }; ~~~~~~~~
Restart radvd: /etc/init.d/radvd restart
Now THINK! You just blew open your firewall and are allowing access to all of your internal machines over IPv6! Time to look at ip6tables. Yes, you have to do all those rules again. You might do something basic like this to prevent anyone from coming in, except to your defined ports, and allow yourself to go out as you wish…
#
# IPv6 rules
/sbin/ip6tables -F # flush all
/sbin/ip6tables -X # delete all
/sbin/ip6tables -t mangle -F
/sbin/ip6tables -t mangle -X
# open loopback wide
/sbin/ip6tables -A INPUT -i lo -j ACCEPT
/sbin/ip6tables -A OUTPUT -o lo -j ACCEPT
# drop everything inbound by default
/sbin/ip6tables -P INPUT DROP
/sbin/ip6tables -P FORWARD DROP
/sbin/ip6tables -P OUTPUT ACCEPT
# forwarding basis: outgoing is fine, incoming is not
/sbin/ip6tables -A FORWARD -i tun6to4 -m state --state ESTABLISHED,RELATED -j ACCEPT # allow established
/sbin/ip6tables -A FORWARD -o tun6to4 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # allow outgoing
/sbin/ip6tables -A FORWARD -i eth0 -o eth0 -j ACCEPT # we can talk amongst ourselves
# I don't like the preceding rule, it combinatorially explodes with more
than 1 interface
# by default, allow my own outgoing but no incoming
/sbin/ip6tables -A INPUT -i tun6to4 -m state --state ESTABLISHED,RELATED -j ACCEPT # no new incoming
# allow ICMP
/sbin/ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
# open my ports
/sbin/ip6tables -A INPUT -i tun6to4 -p tcp --destination-port 80 -j ACCEPT /sbin/ip6tables -A INPUT -i tun6to4 -p tcp --destination-port 22 -j ACCEPT
# see the failures
/sbin/ip6tables -A FORWARD -m limit --limit 15/minute -j LOG --log-level info /sbin/ip6tables -A INPUT -m limit --limit 15/minute -j LOG --log-level info
Most of your machines with IPv6 enabled will just work at this point. You may wish to give some of them static addresses so you can get to them from outside (after added a firewall rule of course). The IETF took mercy on us poor old IPv4 folk and made a syntax for using IPv4 dotted quads in IPv6 addresses so you don’t have to invent all new numbers. Like this…
iface eth0 inet static
address 172.17.1.214
...
iface eth0 inet6 static
address 2002:63b2:9d39:1101::172.17.1.214 <<<< see me using my IPv4 for sanity netmask 64
… that will make the IPv6 address 2002:63b2:9d39:1101::ac11:1d6
That about does it. Someday you will get real IPv6 addresses from your ISP and need to renumber everything to add those addresses in parallel with your 6to4 addresses.
OS X will sometimes hang for 10+ seconds, frequently earning you the dread beachball. Anything that causes the program’s main thread to stop processing events will earn you a beachball, but I can suggest two:
First the easily explainable: Your hard drive might be failing. Hard drives generally fail slowly. They start detecting problematic sectors and rewrite them to good sectors and continue on their merry way. Eventually they might have to try many times to recover the data, during this time the drive is unavailable to your computer and any program that tries to access it will get a beach ball until the drive either successfully remaps the sector or gives up. Disk drives have a thing called S.M.A.R.T. which lets the computer track how the drive is failing. Do not be deceived by Disk Utility’s claims that your S.M.A.R.T. status is good. I’ve had two notebook drives failing miserably, with unrecoverable sectors (lost data) and Disk Utility was perfectly happy. Get something like Apple - Downloads - System/Disk Utilities - SMART Utility and use it. Some drives report strangely. You might have a false positive.
Second and bordering on witchcraft: If you look in your
/var/log/system.log and see lines with INSERT-HANG-DETECTED you
might do a tail -f /var/log/system.log
and see if it correlates with
your hangs. I had that on a desktop and a laptop. Now, for the strange
page… Safari is tracking your web browsing and keeping images of the web
sites you visit, even if you clear your caches and history. As part of
Top Sites there is a directory of screen shots from web sites you visit.
Not finding a GUI way to clear those, I did a
rm Library/Caches/com.apple.Safari/Webpage Previews/*.png
and
a rm Library/Caches/com.apple.Safari/Webpage Previews/*.jpeg
– on both
machines my random freezes stopped. I can only posit two explanations,
neither of which sounds very good. It is possible that one of the images
in there is corrupt in such a way that it takes a long time to parse,
and Safari parses it frequently. The other is that beyond a certain
size, that directory causes terrible performance in some frequent
algorithm.
Under Mac OS X there is a program named “security” which lets you manipulate the keychain. Its error messages are a bit useless though.
If you find yourself trying to validate a certificate and getting Cert Verify Result: CSSMERR_TP_INVALID_CERTIFICATE as a result, it could be because the certificate has entries in the subjectAltName encoded in something other than ASN.1 IA5String. In particular, PrintableString is accepted by openssl and firefox, but not by OS X.
When seen from Safari, these certificates will bump the browser back to the previous page, and if you look in the debug console will show: The certificate for this server is invalid. You might be connecting to a server that is pretending to be YOURHOSTNAME
There. Hopefully this bit of text and some googling will save someone else an afternoon.