John Borwick’s blog

Neat stuff John likes.

November 29th, 2004

Dell Incentives

WXII is covering how amazing Forsyth County’s incentive plan is to get Dell to come to our area. The NC legislature has already pledged a huge amount of money, too. I don’t understand; if you divide it out,

  $50 million (high guess)/ 1000 people (high guess)= $50,000 / person

I don’t see how this makes sense. Couldn’t we create a whole state government agency that would pay people to do things instead? Like, things that will make our lives better or make money, whatever.

November 26th, 2004

Access is Denied

Windows XP Service Pack 2 (SP2) gave my dad the “access is denied” error. We found a Microsoft suggestion about what to do, but that is really complex and basically involves running the SP2 update, finding which Registry Key can’t be opened, fixing that problem, and then running it again.

Only this forum entry had a more reasonable suggestion: Go to start -> run, then type

secedit /configure /cfg %windir%repairsecsetup.inf /db secsetup.sdb
/verbose

This resets your security policy, so that registry keys that may have given you errors like “Error while opening key” will be reset.

November 26th, 2004

TCP/IP Illustrated, Volume 2

So, I finished TCP/IP Illustrated, Volume 1: The Protocols. Now I’m starting out on TCP/IP Illustrated, Volume 2: The Implementation.

Volume 2 is a code walkthrough of BSD 4.4-Lite, aka Net/3. I love FreeBSD, and one of the reasons I got a Mac was because it’s based on BSD. Well, lo and behold, the fundamental structures described so far (mbufs) are still being used. /usr/include/sys/mbuf.h pointed me to Apple’s Public Source License, though, which threw me off. The FSF says the APSL 2.0 is OK–not perfect, but open enough to be good.

So, here begin my adventures with testing out TCP/IP Illustrated’s code walkthrough using OS X. “netstat -m” is the first cool thing I’ve found out about.

I also went back to the 1990s by turning on “echo”, “discard”, “chargen”, “daytime” in /etc/inetd.conf. The UDP versions of these services aren’t working for me right now, though.

November 21st, 2004

Why MTU size matters in a NAT environment

I’ve read lots of comments about how people needed to change their MTU size to accomodate Verizion or others, but I haven’t understood why anyone needs to tune the MTU. Well, I have a better sense now that I’ve read RFC 3022, “Traditional IP Network Address Translator (Traditional NAT)”:

6.3. Translation of outbound TCP/UDP fragmented packets in NAPT setup

Translation of outbound TCP/UDP fragments (i.e., those originating from private hosts) in NAPT setup are doomed to fail.

You can’t have fragments and use NAT. If you decrease your MTU size, that decreases the chance that a router in the middle will want to fragment your packet.
(This is just my best guess, not an authoritative answer.)

November 21st, 2004

ADDICTIVE FLASH GAME

I’ve been playing NeliNurk, a logic game. I found it through digitalburrito’s 12many link.

November 20th, 2004

Building gpgme on OS X

I just built gpgme 1.0.0. I was getting errors like

engine-gpgsm.c:866: error: dereferencing pointer to incomplete type

Well, the “assuan” directory was not being built by default. By changing the main Makefile to include “assuan”, and “gpgme/Makefile” to include assuan, everything built and “make check” worked.

These problems go away if you use gpgme 1.0.1 instead.

November 20th, 2004

Mac OS X MTU

It looks like the “en0″ and “en1″ interfaces for my Powerbook G4, which are the wired and wireless connections, respectively, have strict limits on what you can set for their MTU size.

MTU stays for “Maximum Transmission Unit.” The larger it is, the more data you can fit in a packet (of any type).

I’m looking at this to better understand MTU size and to see if I could help raise the internet MTU.

November 17th, 2004

BitTorrent

I now “get” BitTorrent. I had to check it out when someone at the IETF sent out a BitTorrent utilization graph which shows the awesome speeds possible.

Its success is mainly due to its politics, not technology. The longer you stay on (dependent on the tracker), the better your download speeds can become. Implementations do not take you to a “default” server; you have to go find a torrent link, meaning that BitTorrent can’t be held at fault for any copyright violations.

I’d like to read a technical specification to figure out who tells the BitTorrent tracker that you’ve got credit. Could I set up two BitTorrent machines that connect to the same tracker, and have one machine give credits to the other machine?

November 17th, 2004

ping(1)

It feels odd to look at the ping man page.

Only these Russians and I have apparently seen the below:

$ ping -c 1 -s 56 www.google.com
PING www.google.akadns.net (64.233.171.104): 56 data bytes
64 bytes from 64.233.171.104: icmpseq=0 ttl=243 time=62.874 ms

— www.google.akadns.net ping statistics
—1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 62.874/62.874/62.874 ms
$ ping -c 1 -s 57 www.google.com
PING www.google.akadns.net (64.233.171.104): 57 data bytes
64 bytes from 64.233.171.104: icmpseq=0 ttl=243 time=63.659 ms
wrong data byte #56 should be 0x38 but was 0x0
         41 9c 25 ae 0 8 60 28 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
         20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 

--- www.google.akadns.net ping statistics
---1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 63.659/63.659/63.659 ms

When I have a packet size larger than 56, something in the packet gets corrupted. Could it be my Linksys router? OS X? Bellsouth? It’s a mystery.

November 15th, 2004

Working on TCP/IP Illustrated

I’ve read about 21 chapters of TCP/IP Illustrated, Volume 1: everything from ICMP and UDP to routing, multicasting, IGMP, and TCP. It’s a good experience on two levels: what I learn from the networking side of things and what I learn about coding practices, standards, and algorithms.

I just flipped through TCP/IP Illustrated, Volume 2, and it looks A LOT more hardcore. Hopefully it will teach me more about open-source software, good C code, and code walkthroughs.